雷鋒依然在人間-工廠方法模式
1.簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。
2.工廠方法模式(factory method)定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到子類。
3.工廠方法模式的好處就是在擴充套件功能的時候,只要擴充套件了變化,不用修改現有的類了,也就完全符合了開放-封閉原則。
4.工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行。你想要加功能,搬來是改工廠類的,而現在是修改客戶端。
5.工廠方法模式是簡單工廠模式的進一步抽象和推廣。由於使用了多型性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。但缺點是由於每加乙個產品,就需要加乙個產品工廠的類,增加了額外的開發量。
6.老人不需要知道誰來做好事,他只需知道是學雷鋒的人來幫忙就可以了。
8.1 operation.h
#pragma once
class operation
; operation(double numbera, double numberb)
:m_numbera(numbera),m_numberb(m_numberb)
; double geta()
; void seta(double number)
; double getb()
; void setb(double number)
; virtual double getresult()
protected:
double m_numbera;
double m_numberb;
};class operationadd :public operation
};class operationsub :public operation
};class operationmul :public operation
};class operationdiv :public operation
};
8.2 ifactory.h
#pragma once
#include "operation.h"
class ifactory
;//加法工廠
class addfactory :public ifactory;};
//減法工廠
class subfactory :public ifactory;};
//乘法工廠
class mulfactory :public ifactory;};
//除法工廠
class divfactory :public ifactory
;};
8.3 客戶端
#include "stdafx.h"
#include "ifactory.h"
int _tmain(int argc, _tchar* argv)
大話設計模式八 工廠方法模式(雷鋒依然在人間)
工廠方法模式是簡單工廠模式的抽象和擴充套件。工廠方法模式是由客戶端來決定例項化那乙個工廠實現類。在簡單工廠類中如果要增加功能改動的是工廠類,但在工廠方法模式中要改的就是客戶端了,由客戶端決定 package factory public class mainclass private static ...
工廠方法模式Python版 雷鋒依然在人間
工廠方法模式定義了乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個雷的例項化延遲到其子類。工廠方法模式的本質就是延遲到子類來選擇是實現。實現 class operationfactory operators operators operationadd opera...
工廠方法模式 雷鋒在人間
工廠方法模式 對比兩個模式 乙個簡單地加減乘除類 結構圖 只要輸入運算符號,工廠就可以例項化出乙個合適的物件,通過多型,返回父類的方式實現了計算器的結果。如果需要更改加法運算,直接更改operationadd就可以。如果增加其他運算,只要增加相應的運運算元類就可以了。如果需要修改運算類工廠,只需要在...