Objective C 工廠模式

2021-10-04 08:09:14 字數 2356 閱讀 8399

工廠是處理在不指定物件具體型別的情況下建立物件的問題。工廠方法模式的實質是「定義乙個建立物件的介面,但讓實現這個介面的類來決定例項化哪個類。工廠方法讓類的例項化推遲到子類中進行。

在物件導向程式設計中,工廠通常是乙個用來建立其他物件的物件。工廠是構造方法的抽象,用來實現不用的分配方案。

工廠物件通常包含乙個或多個方法,用來建立這個工廠所能建立的各種型別的物件。這些方法可能接收引數,用來指定物件建立的方式,最後返回建立的物件。

抽象工廠模式提供了一種方式,可以將一組具有同一主題的單獨的工廠封裝起來。在正常使用中,客戶端程式需要建立抽象工廠的具體實現,然後使用抽象工廠作為介面來建立這一主題的具體物件。客戶端程式不需要知道(或關心)它從這些內部的工廠方法中獲得物件的具體型別,因為客戶端程式僅使用這些物件的通用介面。抽象工廠模式將一組物件的實現細節與他們的一般使用分離開來。

簡單概括一下,一般工廠模式是工廠可以生產一種產品,多個型號。抽象工廠可以生產多個產品,多個型號。先上圖,下圖描述的就是一般工廠

這裡的話,工廠1就只能生產產品型號1,工廠2就只能生產產品型號2,下面用實際**實現來描述一般工廠模式:

這裡宣告乙個交通工具產品,它包含了car和plane兩種型號的交通工具,這兩種工具都有乙個相同的動作就是run。

1

@inte***ce

vehicle : nsobject

3 - (void

)run;

4@end56

@implementation

vehicle

7 - (void

)run

9@end

1011

12@inte***ce

car : vehicle

14 - (void

)run;

15@end

1617

@implementation

car18 - (void

)run

21@end

2223

24@inte***ce

plane : vehicle

26 - (void

)run;

27@end

2829

@implementation

plane

30 - (void

)run

33@end

上面我們定義了交通工具裡面的兩種產品,下面我們將定義生產這些交通工具的工廠:

@inte***ce

vehiclefactory : nsobject

- (vehicle *)createvehicle;

@end

@implementation

vehiclefactory

- (vehicle *)createvehicle

@end

@inte***ce

ca***ctory : vehiclefactory

- (vehicle *)createvehicle;

@end

@implementation

ca***ctory

- (vehicle *)createvehicle

@end@inte***ce

planefactory : vehiclefactory

- (vehicle *)createvehicle;

@end

@implementation

planefactory

- (vehicle *)createvehicle

@end

現在我們具體使用:

1

@inte***ce

usevehicle : nsobject

3 - (void

)usevehicle;

4@end56

@implementation

usefactory

7 - (void

)usevehicle

13@end

下面就給出抽象工廠的圖,具體例項就不再**描述,大致意思如下:

在objective-c裡面實際上是沒有抽象類這個概念了,但是可以通過一些手段讓某乙個類達到抽象類的效果,此方法就是在直接呼叫抽象類的方法的時候丟擲異常,例如:

1 - (id)somemethod:(someobject *)blah

2

1 - (id

)init27

8 self =[super init];9if

(self)

1213

return

self;

14 }

Objective C 外觀模式

今天和大家分享的是外觀模式。這個模式也不難,我猜想很多人都不經意間用過。好吧,先讓我們看看他是如何定義的。外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義 乙個高層介面,這個介面使得這一子系統更加容易使用。下面給大家展示一下類的結構圖,想必大家一看就明白了 其實這個模式中,...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...

簡單工廠模式 工廠模式 抽象工廠模式

簡單工廠模式 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關類,對於客戶端來說,去除了與具體產品的依賴。但增加功能時,需增加 case 邏輯判斷分支條件,修改了原有的類,我們不但對擴充套件開發了,對修改也開放了,違背了開放 封閉原則。工廠方法模式,定義了乙...