iOS 工廠模式

2021-06-23 09:22:07 字數 2080 閱讀 8871

工廠模式我的理解是:他就是為了建立物件的

建立物件的時候,我們一般是alloc乙個物件,如果需要建立100個這樣的物件,如果是在乙個for迴圈中還好說,直接一句alloc就行了,但是事實並不那麼如意,我們可能會在不同的地方去建立這個物件,那麼我們可能需要寫100句alloc 了,但是如果我們在建立物件的時候,需要在這些物件建立完之後,為它的乙個屬性新增乙個固定的值,比方說都是某某學校的學生,那麼可能有需要多些100行重複的**了,那麼,如果寫乙個-(void)createobj方法,把建立物件和學校屬性寫在這個方法裡邊,那麼就是會省事很多,也就是說我們可以alloc 建立物件封裝到乙個方法裡邊,直接呼叫這個方法就可以了,這就是簡單工廠方法

**結構如下

animal 類

@inte***ce animal :nsobject

@proterty(nonatomic,strong) nsstring *name;

-(void)laugh;

@end

dog類

@inte***ce dog:animal

@end

cat類

@inte***ce cat:animal

@end

建立物件的工廠類

.h@inte***ce animalfactory:nsobject

+(dog *)createdog;

+(cat *)createcat;

@end

.m@implementation animalfactory

+(dog *)createdog

+(cat *) createcat

main.m檔案

dog *dog=[animalfactory createdog];

cat *cat=[animalfactory createcat];

這是簡單工廠模式

現在建立100個dog物件,如果這100個物件寫在程式中的不同地方,按上邊的方法是需要把dog *dog=[animalfactory createdog];這一句話寫在程式中很多不同的地方,那麼現在有乙個需求,就是如果需要把這些建立的100個dog物件全部變成cat物件,那麼按照剛才的那個做法,就需要在這100句**中把createdog方法變成createcat方法了,這樣做還是很複雜

那麼這個時候用工廠方法模式就能解決這個難題了

工廠方法模式是為每乙個要建立的物件所在的類都相應地建立乙個工廠

**如下

@inte***ce animalfactory:nsobject

-(animal*)createanimal;

@end;

dog工廠類

@inte***ce dogfactory:animalfactory;

@implementation dogfactory

-(animal *)createanimal

@end

cat工廠類

@inte***ce catfactory:animalfactory;

@implementation cat factory

-(animal *)createanimal

retrurn [[cat alloc]init];

}@end

main.m

animalfactory *dogfactory=[[dogfactory alloc]init];

animal *animal1=[dogfactory createanimal];

[animal1 laugh];

animal *animal2=[dogfactory createanimal];

[animal2 laugh];

…….animal *animal100=[dogfactory createanimal];

[animal100 laugh];

這樣話如果要把100個dog改為cat的話,只需要吧dogfactory改為catfactory就可以了

但是工廠方法也有它的限制:

1.要建立的類必須擁有同乙個父類

2.要建立的類在100個不同的地方所呼叫的方法必須一樣

以上這些只是個人感悟,會有一些不足的地方,請大家幫忙改正,嘿嘿

工廠模式 iOS

簡單 介紹一下工廠模式,是為了建立物件,也就是為了建立來自同乙個父類的不同子類物件,動態的去建立物件。下面舉個例子 乙個動物類 import inte ce animal nsobject property nonatomic,strong nsstring name void eat end im...

iOS 工廠模式

工廠模式用於建立某個類的子類例項的 要解決的問題 在其他地方,不確定要建立那個具體的子類的時候使用 import 動物類 作為父類 inte ce animal nsobject void eat end import animal.h implementation animal void eat ...

iOS 工廠模式

一 gof是這樣描述工廠模式的 define an inte ce for creating an object,but let subclasses decide which class to instantiate.factory method lets a class defer instan...