簡單工廠模式(****** factory pattern):又稱為靜態工廠方法(static factory method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。簡單工廠模式包含著以下三個角色
factory:工廠角色
工廠角色負責實現建立所有例項的內部邏輯
product:抽象產品角色
抽象產品角色是所建立的所有物件的父類,負責描述所有例項所共有的公共介面
concreteproduct:具體產品角色
具體產品角色是建立目標,所有建立的物件都充當這個角色的某個具體類的例項。
舉個例子.比方說我們有乙個person類.我們通過這個person類來」建立」乙個人.
@inte***ce
person : nsobject
@end
@implementation
person
@end
@inte***ce
male : person
@end
@implementation
male
@end
@inte***ce
female : person
@end
@implementation
female
@end
比如我們想快速建立男人,女人.那麼,我們會新增乙個gender的屬性
typedef ns_enum(nsuinteger, persongender) ;
@inte***ce
person : nsobject
///性別
@property (nonatomic ,strong) nsstring *gender;
+ (instancetype)creatwithgender:(persongender)gender;
- (void)initwithgender:(persongender)gender;
@end
這樣建立的好處是,我們不用管類的內部在建立男女物件的時候是如何處理的.只需要在建立的時候傳入男人或者是女人.就能得到相應的男人或者是女人物件.在快速建立物件的時候十分有效.
現在我們假設出現了乙個新的性別.那麼就需要去這個建立方法裡面做相應的邏輯修改.乙個兩個需求可能還比較好.但是當這個類越來越大的時候.這個簡單工廠模式就突出了他的坑爹的地方了擴充套件困難,一旦新增新"產品"就不得不修改工廠邏輯,在"產品"型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。
簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪乙個產品類(這些產品類繼承自乙個父類或介面)的例項。也就是說簡單工廠模式是由同乙個父類管理的建立不同子類的一種設計模式.通過從父類的建立方法裡面傳入必須的引數來判斷建立什麼子類(這樣拓展之後父類的判斷邏輯就會增大).
工廠設計模式一 簡單工廠模式
工廠設計模式實現了建立者和呼叫者的分離。類別 1.簡單工廠模式 2.工廠方法模式 3.抽象工廠模式 遵循的設計原則 1.ocp 開閉原則,open closed principle 乙個軟體的實體應當那個對擴充套件開放,對修改關閉 2.dip 依賴倒置原則,dependence inversion ...
工廠設計模式(一) 簡單工廠模式
工廠設計模式可分為 簡單工廠模式 工廠方法模式 抽象工廠模式 第一篇我們來聊聊 理解 假設某些例項具有相同的方法,可以根據引數的不同返回不同的例項,被建立的例項通常都具有共同的父類,那麼可以考慮使用簡單設計模式來實現。例如可以實用簡單工廠模式設計乙個可以建立不同幾何形狀 如圓形 方形和三角形等 的繪...
設計模式 一 工廠模式 簡單工廠
以前總覺得設計模式純屬扯淡,浪費精力,10 能搞定的事情非要寫那麼多的介面或者實現類.為什麼要用設計模式,開發有乙個重要的原則 對修改關閉,對擴充套件開放.因為如果把 全部都雜糅到乙個類中,第一 復用性太差,擴充套件性不強.第二,修改起來一改巨改,改動即意味著要增加測試人員工作量,且引入修改bug如...