(1)簡單工廠模式的侷限:簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。但每次擴充套件功能需要修改原有類,不但對擴充套件開放了還對修改也開放了,違背了開放封閉原則。
(2)工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到子類。
(3)工廠方法降低了客戶程式與產品物件的耦合,工廠方法模式是簡單工廠模式的進一步抽象和推廣,由於使用了多型性,工廠方法模式保持了簡單工廠模式的優點,但缺點是每增加乙個產品,就需要加乙個產品類的工廠,增加了額外的開發量。
//operation 運算類
class
operation
double
getnumberb()
void
setnumbera
(double var)
void
setnumberb
(double var)
virtual
double
getresult()
private
:double numbera;
double numberb;};
class
operationadd
:public operation
;class
operationsub
:public operation
;class
operationmul
:public operation
;class
operationdiv
:public operation
;
//工廠類
class
ifactory
;class
addfactor
:public ifactory};
class
subfactor
:public ifactory};
class
mulfactor
:public ifactory};
class
divfactor
:public ifactory
};
//客戶端**
void widget::
cal()if
(mycal.varb==
0&&ui-
>symbolbox-
>
currentindex()
==3) operation *myoperator=myfactory-
>
createoperation()
; myoperator-
>
setnumbera
(mycal.vara)
; myoperator-
>
setnumberb
(mycal.varb)
; mycal.varans=myoperator-
>
getresult()
; ui-
>outedit-
>
settext
(qstring::
number
(mycal.varans));
delete myfactory;
delete myoperator;
}catch
(int i)
}
//介面資料相關結構體
長期從事程式設計相關研究,涉及qt、機械臂、輪式機械人、四足機械人的建模及**,可共同**程式設計相關問題,可指導課程設計及畢業設計,詳詢:qq:
2963325158
大話設計模式 工廠方法模式 8
工廠方法模式 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個工廠。工廠方法使乙個類的例項化延遲到其子類.簡單工廠與工廠方法 1.簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體...
大話設計模式 工廠方法模式 8
工廠方法模式 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個工廠。工廠方法使乙個類的例項化延遲到其子類.簡單工廠與工廠方法 1.簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體...
8 工廠方法模式
簡單工廠和工廠方法!簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。簡單講,簡單工廠 計算器 如果需要擴充套件計算器的功能新增類,然後在工廠中加上else if 這樣的判斷,工廠方法模式相當與把工廠也替換成抽象的...