一,工廠方法模式
工廠方法模式:定義建立物件的介面,讓子類決定例項化那乙個類。工廠方法使得類的例項化延遲到其子類。
靜態類結構圖:
product:產品抽象類,定義產品物件的建立介面。
concreteproduct:實現product介面的具體產品類。
creator:定義返回product物件的工廠方法,也可以提供工廠方法的預設實現。
concretecreator:creator子類,過載了工廠方法。返回concreteproduct物件。
二,工廠方法的使用場景
1,編譯時無法準確預期要建立的物件的類;
2,類想讓子類決定執行時建立什麼物件;
3,類有若干個輔助子類,開發者希望將返回哪個子類這個資訊區域性化;
使用工廠方法模式最低限度時,工廠方法能夠給予類在變更返回哪一種物件這個問題上更多的靈活性。適用情況:「乙個類無法預期需要生成哪個類的物件,想讓其子類來指定所生成的物件。」
三,工廠方法建立物件更加安全
和直接建立新物件相比,工廠方法模式讓客戶程式可以要求由工程方法建立的物件有一組共同的行為。這樣往類層次結構中引入新的具體產品並不需修改客戶端**,因為返回任何具體物件的介面根客戶端一直使用的介面相同。
四,**
接下來我們用**演示一下:
@inte***ce zgyshape : nsobject
- (void)draw;
@end
@implementation zgyshape
- (void)drawelse
}@end
@inte***ce zgycircleshape : zgyshape
@end
@implementation zgycircleshape
- (void)draw
@end
@inte***ce zgysquareshape : zgyshape
@end
@implementation zgysquareshape
- (void)draw
@end
#import "zgyshape.h"
@inte***ce zgyshapefactory : nsobject
- (zgyshape *)factorymethod;
@end
@implementation zgyshapefactory
- (zgyshape *)factorymethod
@end
@inte***ce zgycircleshapefactory : zgyshapefactory
@end
#import "zgycircleshape.h"
@implementation zgycircleshapefactory
- (zgyshape *)factorymethod
@end
@inte***ce zgysquareshapefactory : zgyshapefactory
@end
#import "zgysquareshape.h"
@implementation zgysquareshapefactory
- (zgyshape *)factorymethod
@end
#import "zgyshape.h"
#import "zgycircleshapefactory.h"
#import "zgysquareshapefactory.h"
@inte***ce viewcontroller ()
@end
@implementation viewcontroller
- (void)viewdidload
@end
最終的列印輸出
2017-09-30 22:57:14.399386+0800 設計模式(工廠方法模式)[63815:21286029] 繪製乙個圓形
2017-09-30 22:57:14.399486+0800 設計模式(工廠方法模式)[63815:21286029] 繪製乙個方形
設計模式(2) 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使用乙個類的例項化延遲到子類。舉個栗子 我們要生產水果罐頭,我們應該怎麼做呢?首先,我們需要準備好原料。其次我們需要乙個罐頭工廠,往工廠裡運送不同的原料,出來的就是不同的罐頭。原料就是蘋果啊 橘子啊等等的這些類。int...
設計模式2 工廠方法模式
工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 工廠方法模式的意義是定義乙個建立 產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工...
設計模式2 工廠方法模式
工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。類圖 抽象產品類product負責定義產品的共性,實現對事物最抽象的定義。creator為抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠concretecreator完成的...