簡單工廠模式

2021-10-03 06:02:19 字數 3033 閱讀 8776

具有統一的介面;根據客戶端請求,建立並返回相應具體的產品例項具體產品的父類,定義具體產品所需要的屬性和方法。子類通過繼承來獲取這些屬性和方法(當整個系統中只有唯一的產品時,可以省略抽象產品。將具體工廠和具體產品進行合併)繼承自抽象產品,具體工廠類建立的物件就是具體產品的例項核心是具體工廠類,包含有必要的判斷邏輯,決定什麼條件下建立什麼樣的具體產品例項。客戶端只需要呼叫,不用關心具體產品的建立過程和實施細則。這實現了責任的分離,成功解耦,有利於以後的維護和擴充套件具體工廠集中了所有的產品建立邏輯。也將成為整個系統的瓶頸,如某些類不是繼承自同乙個抽象產品(父類)時,便造成了系統難以拓展具體產品的業務邏輯相同,但是各自的具體實現不同;相同的執行方法,不同的操作(條件)結果不同。

==== 具體工廠.**件 ==

====

====

====

====

====

====

====

#import

// 抽象產品類(產品的父類)

#import "loginabstractproduct.h"

typedef

ns_enum

(nsinteger, logintype)

;@inte***ce loginfactory : nsobject

/// 根據傳入的條件,返回不同的登入方式

+(loginabstractproduct *

)loginwaychoosewithtype:

(logintype)type;

@end

====

====

====

====

====

====

====

== 具體工廠.m檔案 ==

====

====

====

====

====

====

====

#import "loginfactory.h"

#import "loginwayone.h"

#import "loginwaytwo.h"

@implementation loginfactory

/// 根據傳入的條件,返回不同的登入方式

+(loginabstractproduct *

)loginwaychoosewithtype:

(logintype)type

return product;

}@end

====

====

====

====

====

====

====

== 抽象產品.**件 ==

====

====

====

====

====

====

====

@inte***ce loginabstractproduct : nsobject

@property

(nonatomic, strong) nsstring *name;

@property

(nonatomic, strong) nsstring *password;-(

void

)requestlogin;

@end

====

====

====

====

====

====

====

== 具體產品.**件 ==

====

====

====

====

====

====

====

// 產品一

@inte***ce loginwayone : loginabstractproduct

@end

// 產品二

@inte***ce loginwaytwo : loginabstractproduct

@end

====

====

====

====

====

====

====

== 具體產品.m檔案 ==

====

====

====

====

====

====

====

// 登入方式一的具體實現

@implementation loginwayone-(

void

)requestlogin

@end

// 登入方式二的具體實現

@implementation loginwaytwo-(

void

)requestlogin

@end

====

====

====

====

====

====

====

== 客戶端呼叫 ==

====

====

====

====

====

====

====

// 傳入logintype_one、logintype_two得到不同的具體產品

loginabstractproduct *product =

[loginfactory loginwaychoosewithtype:logintype_one]

;[product requestlogin]

;ps 學習記錄,如發現錯誤,歡迎指正,相互**學

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

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

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