IOS設計模式之工場模式

2021-07-03 21:10:00 字數 3147 閱讀 7462

在基類中定義建立物件的乙個介面,讓子類決定實列化那個類.工廠方法讓乙個類的實列化延遲到子類進行.工廠方法解決的問題是

物件的建立時機,它提供了一種擴充套件的策略,很好的符合了開放封閉原則.

將工廠和產品都抽象出乙個基類,在基類中定義統一的介面,然後再具體的工廠同建立具體的產品.

與直接建立新的具體物件相比,使用工廠方法建立物件可算一種最佳做法.工廠方法模式讓客戶程式可以要求由工廠方法建立的

物件擁有一組共同的行為.所以往類層次結構中注入新的具體產品並不需要修改客戶端**,因為返回的任何具體物件的介面都跟客戶

端一致再用的從前的介面相同.

/********************/

breedofdogprotocol.h

//定義狗的品種的方法

@protocol breedofdogprotocol

-(nsstring *) getbreed;//

得到狗的品種的公共方法

@end

/********************/

breedofdog.h

@inte***ce

breedofdog :

nsobject

@property

nsstring *_breed;

@end

breedofdog.m

@implementationbreedofdog

-(nsstring *) getbreed

@end

/********************/

bordercollie.h

//邊境牧羊犬

@inte***ce bordercollie : breedofdog

@end

bordercollie.m

@implementationbordercollie

-(nsstring *) getbreed

@end

/********************/

jiwawa.h

//吉娃娃

@inte***ce jiwawa : breedofdog

@end

jiwawa.m

@implementationjiwawa

-(nsstring *)getbreed

@end

/********************/

定義工廠方法

breedofdogfactory.h

@inte***ce breedofdogfactory :nsobject

-(breedofdog *) getdifferentbreedofdog;

@end

breedofdogfactory.m

@implementation breedofdogfactory

-(breedofdog *) getdifferentbreedofdog

@end

/********************/

bordercolliefactory.h

@inte***ce bordercolliefactory :breedofdogfactory

@end

bordercolliefactory.m

@implementation bordercolliefactory

-(breedofdog *) getdifferentbreedofdog

@end

/********************/

jiwawafactory.h

@inte***ce jiwawafactory : breedofdogfactory

@end

jiwawafactory.m

@implementationjiwawafactory

-(breedofdog *)getdifferentbreedofdog

@end

/********************/

main.m

int main(int argc,const

char * argv)

5 也許在使用工廠模式的時候你會想到nsnumber類,他的設計思想和工廠模式差不多

nsnumber子類圖

例如:

nsinteger是基礎類,但是nsnumber是乙個類,如果想要儲存乙個數值,直接用nsinteger時不行得,比如在array中.

nsarray *array = [[nsarray alloc] init];

[array addobject :3];  //會造成編譯錯誤,因為nsarray裡面儲存的是乙個類,二不能直接儲存乙個數值.

nsarray *array = [[array alloc] init];

[array addobject :[nsnumber numberwithint : 3]];//不會造成編譯錯誤,因為nsnumber生成的是乙個物件.

cocoa提供了nsnumber來包裝(ji以物件的形式實現)基本資料型別.

android設計模式 簡單工場模式

例1 思路 蘋果類,包含獲取蘋果的方法。香蕉類,包含獲取香蕉的方法。主類 建立蘋果例項,香蕉例項,分別呼叫獲取方法。改進1 有共同方法 抽象出乙個水果介面 改進2 建立出乙個水果工廠,完成獲取蘋果,獲取香蕉的行為。優勢 主類只需要建立乙個工廠類即可。改進3 將水果工廠中的獲取方法設定成靜態。優勢 呼...

IOS設計模式之委託模式

委託模式從gof裝飾模式 decorator 介面卡模式 adapter 模板方法 template method 模式等演變而來,幾乎每乙個應用都會或多或少地用到委託模式,不只是cocoa touch框架,在cocoa中,委託模式也得到了廣泛的應用。include usingnamespace s...

iOS 設計模式之工廠模式

ios 工廠模式我的理解是 他就是為了建立物件的 建立物件的時候,我們一般是alloc乙個物件,如果需要建立100個這樣的物件,如果是在乙個for迴圈中還好說,直接一句alloc就行了,但是事實並不那麼如意,我們可能會在不同的地方去建立這個物件,那麼我們可能需要寫100句alloc 了,但是如果我們...