iOS 設計模式之工廠模式

2021-06-29 13:37:06 字數 2091 閱讀 7599

ios

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

建立物件的時候,我們一般是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設計模式之簡單工廠模式

最近在看關於設計模式的書籍,開始覺得在設計程式架構之時,能夠靈活運用這些設計模式,將變得非常具有美感。乙個好的設計模式使得程式更加的靈活,容易修改,易於使用。從最簡單的簡單工廠模式開始學起,舉乙個實現計算器的例子,來完成簡單工廠模式。乙個簡單計算器,用四則運算來考慮的話,加減乘除,那麼初學者會覺得很...

iOS設計模式之簡單工廠模式

乙個簡單計算器,用四則運算來考慮的話,加減乘除,那麼初學者會覺得很簡單,用if條件來進行判斷,判斷好了之後就可以完成要求,而稍微有經驗點的 可能會選擇switch case的判斷方式,例如下面的 operation運算方法的邏輯 void operationwithnumbera double nu...

iOS設計模式之簡單工廠模式

工廠方法 factorymethod 模式的定義 定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推遲到具體子工廠類當中。這滿足建立型模式中所要求的 建立與使用相分離 的特點。如果要建立的產品不多,只要乙個工廠類就可以完成,這種模式叫 簡單工廠模式 它不屬於 gof 的 23 種經典設計模式...