在某圖形庫api中提供了多種向量圖模板,使用者可以基於這些向量圖建立不同的顯示圖形,圖形庫設計人員設計的初始類圖如下所示:
在該圖形庫中,每個圖形類(如circle
、********
等)的init()
方法用於初始化所建立的圖形,
setcolor()
方法用於給圖形設定邊框顏色,
fill()
方法用於給圖形設定填充顏色,
setsize()
方法用於設定圖形的大小,
display()
方法用於顯示圖形。
客戶類(client)
在使用該圖形庫時發現存在如下問題:
① 由於在建立視窗時每次只需要使用圖形庫中的一種圖形,因此在更換圖形時需要修改客戶類源**;
② 在圖形庫中增加並使用新的圖形時需要修改客戶類源**;
③ 客戶類在每次使用圖形物件之前需要先建立圖形物件,有些圖形的建立過程較為複雜,導致客戶類**冗長且難以維護。
現需要根據物件導向設計原則對該系統進行重構,要求如下:
① 隔離圖形的建立和使用,將圖形的建立過程封裝在專門的類中,客戶類在使用圖形時無須直接建立圖形物件,甚至不需要關心具體圖形類類名;
② 客戶類能夠方便地更換圖形或使用新增圖形,無須針對具體圖形類程式設計,符合開閉原則。
繪製重構之後的類圖並說明在重構過程中所運用的物件導向設計原則。
重構之後的類圖:
重構過程中所使用的物件導向設計原則及簡要說明:
根據題意採用了工廠方法模式,所謂工廠模式則是定義乙個用於建立物件的介面,但是讓子類決定將哪乙個類例項化。工廠方法模式讓乙個類的例項化延遲到子類。使用了開閉原則,單一職責原則。
設計模式 工廠方法模式
一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...
設計模式 工廠方法模式
1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...
設計模式 工廠方法模式
框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...