Python工廠模式二

2021-10-05 11:33:31 字數 2744 閱讀 2958

抽象工廠模式的主要目的是提供乙個介面來建立一系列相關物件,而無需指定具體的類。工廠方法將建立例項的任務委託給了子類,而抽象工廠方法的目標是建立一系列相關物件。

想象一下,我們開辦了一家披薩店,**美味的印式和美式披薩。為此,我們首先建立乙個抽象基類——pizzafactory,pizzafactory類有兩個抽象方法,即create_vag_piza()和create_non_vag_pizza(),它們需要通過concreatefactory實現。在這個例子中,我們創造了兩個具體的工廠,分別名為indianpizzafactory和uspizzafactory。如下所示:

from abc import abcmeta, abstractmethod

class pizzafactory(object):

@abstractmethod

def create_vag_pizza(self):

pass

@abstractmethod

def create_non_var_pizza(self):

pass

class indianpizzafactory(pizzafactory):

def create_vag_pizza(self):

return deluxeveggiepizza()

def create_non_var_pizza(self):

return chickenpizza()

class uspizzafactory(pizzafactory):

def create_vag_pizza(self):

return mexicanvegpizza()

def create_non_var_pizza(self):

return hampizza()

class vegpizza(metaclass=abcmeta):

@abstractmethod

def prepare(self):

pass

class nonvegpizza(metaclass=abcmeta):

@abstractmethod

def serve(self, vegpizza):

pass

class deluxeveggiepizza(vegpizza):

def prepare(self):

print("prepare ", type(self).__name__)

class chickenpizza(nonvegpizza):

def serve(self, vegpizza):

print(type(self).__name__, "is served with chicken on", type(vegpizza).__name__)

class mexicanvegpizza(vegpizza):

def prepare(self):

print("prepare ", type(self).__name__)

class hampizza(nonvegpizza):

def serve(self, vegpizza):

print(type(self).__name__, "is served with ham on", type(vegpizza).__name__)

上面的**中,我們也進一步定義了abstractproducts。我們建立了兩個抽象類:vegpizza和nonvegpizza;它們都定義了自己的方法,分別是prepare()和serve()。

然後我們為每個abstractproducts定義concreteproducts。就本例來說,我們建立了deluxveggiepizza和mexincanvegpizza,並實現prepare()方法。

我們還定義了chickenpizza和hampizza,並實現了serve()方法

當最終的使用者來到pizzastore並且要乙份美式非素食披薩的時候,uspizzafactory負責準備素食,然後在上面加上火腿,馬上就變成非素食的披薩了;**如下:

工廠方法

抽象工廠方法

它向客戶方開放了乙個建立物件的方法

抽象工廠方法包含乙個或多個工廠方法來建立乙個系列的相關物件

它使用繼承和子類來決定要建立那個物件

它使用組合將建立物件的任務委託給其他類

工廠方法用於建立乙個產品

抽象工廠方法用於建立相關產的系列

工廠模式(二)

工廠模式中,簡單工廠,工廠和抽象工廠的區別,以及每種工廠的優劣勢時,候選人基本都會矇圈。如果自己沒有使用過,甚至使用過沒有認真思考過,肯定是回答不上來的。好吧,下面我就來跟大家講講工廠模式。工廠模式,實際上也會根據業務情景不同會有不同的實現方式。一般分為3種。簡單工廠,工廠和抽象工廠。顧名思義,這三...

python工廠模式 python實現工廠模式

我們有乙個基類person,包含方法get name和get gender 有兩個子類male 和female,建構函式可以打招呼。還有乙個工廠類。工廠類有乙個方法名get person有兩個輸入引數,名字和性別。使用者使用工廠類,通過呼叫get person方法。在程式執行期間,使用者通過性別傳遞...

工廠模式二 工廠方法模式

使用者只需要關心產品對應的工廠,不需要關心建立細節。例如貓和狗都屬於動物一類,都具有吃飯這個功能。先定義介面ianimal public inte ce ianimal實現介面ianimal介面cat類和dog類 public class cat implements ianimal public ...