Python的建立型設計模式(三) 工廠方法模式

2021-09-24 02:23:58 字數 2377 閱讀 3647

3.1.1 原理

工廠方法模式,是簡單工廠模式的衍生,又稱工廠模式、多型工廠模式和虛擬構造器模式,通過定義工廠父類負責定義建立物件的公共介面,而子類則負責生成具體的物件。

步驟:(1):建立抽象工廠類,定義具體工廠的公共介面;

(2): 建立抽象產品類 ,定義具體產品的公共介面;

(3): 建立具體產品類(繼承抽象產品類) & 定義生產的具體產品;

(4):建立具體工廠類(繼承抽象工廠類),定義建立對應具體產品例項的方法;

(5):外界通過呼叫具體工廠類的方法,從而建立不同具體產品類的例項

主要作用

將類的例項化(具體產品的建立)延遲到工廠類的子類(具體工廠)中完成,即由子類來決定應該例項化(建立)哪乙個類。

3.1.2 運用場景

(1)當乙個類不知道它所必須建立的物件的類的時候。

(2) 當乙個類希望由它的子類來指定它所建立的物件的時候。

(2) 當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。(往往放在抽象產品側)。

3.1.4 python實現

class

factory

(object):

defcreateproduct

(self)

:pass

class

factory_a

(factory)

:def

createproduct

(self)

:return product_a(

'a',

'blue'

,'big'

)class

factory_b

(factory)

:def

createproduct

(self)

:return product_b(

'b',

'blue'

,'small'

)class

product

(object):

def__init__

(self,name,color,size)

: self.name = name

self.color = color

self.size = size

defshowproduct

(self)

:pass

class

product_a

(product)

:def

__init__

(self,name,color,size)

: self.name = name

self.color = color

self.size = size

defshowproduct

(self)

:print

('product name:'

,self.name)

print

('product color:'

,self.color)

print

('product size:'

, self.size)

class

product_b

(product)

:def

__init__

(self,name,color,size)

: self.name = name

self.color = color

self.size = size

defshowproduct

(self)

:print

('product name:'

,self.name)

print

('product color:'

,self.color)

print

('product size:'

, self.size)

if __name__==

'__main__'

:

factory_a_ = factory_a(

) a = factory_a_.createproduct(

) a.showproduct(

) factory_b_ = factory_b(

) b = factory_b_.createproduct(

) b.showproduct(

)

建立型設計模式

建立型設計模式對類的建立例項化過程進行抽象,將物件的建立和物件的使用分離。簡單工廠模式 使用頻率4星 工廠方法模式 使用頻率5星 抽象工廠模式 使用頻率5星 建造者模式 使用頻率2星 原型模式 使用頻率3星 單例模式 使用頻率4星 toc 簡單工廠模式將物件建立和物件使用相分離,降低了系統耦合度。優...

建立型設計模式

設計模式分為總的來說分為三大類 建立型模式 五種,工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式 結構型模式 七種,介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式 行為模式 十一種,策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀...

建立型 設計模式

單例 單例項,自我例項化,提供全域性訪問點 工廠 不同型別例項由不同工廠建立,當然也有通過乙個靜態方法建立一種例項或通過傳入引數決定生產的例項 這兩種很明顯不方便擴充套件,需修改 抽象工廠 考慮物件有不同維度 如車有型別和顏色 那麼工廠負責產生一類產品 如工廠產生紅車,白車,黑車 那麼型別上可以通過...