標籤:
抽象原廠模式
理解了Factory 方法模式,其實抽象工廠和Factory 方法模式有很多的相似之處。抽象工廠同樣是分離用戶端對象的建立和邏輯代碼的,但是抽象工廠往往是產生一組資料而不單單是產生一個產品。
抽象工廠提供一個建立一系列相關或相互依賴對象介面,而無需制定它們具體的類。
抽象工廠與Factory 方法
抽象工廠
通過對象組合建立抽象產品
建立多系列產品
必須修改父類的介面才能支援新的產品
Factory 方法
通過類繼承建立抽象產品
建立一種產品
子淚花建立者並重載Factory 方法以建立新產品
Demo
比較多就不一一的貼代碼了,截類圖
用戶端代碼:
#import <Foundation/Foundation.h>#import "Factory.h"#import "ProductType1.h"#import "ProductType2.h"#import "ConcreteFactory1.h"#import "ConcreteFactory2.h"int main(int argc, const char * argv[]) { @autoreleasepool { Factory *factory = [ConcreteFactory1 new]; ProductType1 *pt1 = [factory createProductType1]; ProductType2 *pt2 = [factory createProductType2]; NSLog(@"%@\n%@",pt1.name,pt2.name); Factory *factory2 = [ConcreteFactory2 new]; ProductType1 *pt11 = [factory2 createProductType1]; ProductType2 *pt12 = [factory2 createProductType2]; NSLog(@"%@\n%@",pt11.name,pt12.name); } return 0;}
運行結果
2015-07-20 09:08:04.277 Abstract Factory[35654:8798008] productType1FaproductType2Fa2015-07-20 09:08:04.278 Abstract Factory[35654:8798008] productType1FbproductType2Fb
可以看到,每個工廠產生的是一組產品。
也能夠很明顯的看到抽象工廠的缺點,每當我們需要添加新的產品的時候,需要添加產品對應的類,還需要修改每一個工廠為其添加建立方法。
Objective-C設計模式——抽象原廠模式Abstract Factory(對象建立)