python 工廠模式

2021-09-29 10:25:25 字數 2771 閱讀 4114

內容: 定義要給用於建立物件介面(工廠介面),讓子類決定例項化哪乙個產品類

角色:抽象工廠角色(creator)

具體工廠角色(concrete creator)

抽象產品角色(product)

具體產品角色(concrete product)

工廠 建立物件

1個工廠 生產乙個產品

每個產品有自己對應工廠就可以了

from abc import abcmeta,abstractmethod

class payment

(metaclass=abcmeta)

: @abstractmethod

def pay

(self,money)

: pass

class alipay

(payment)

: #如果不寫工廠方法,就要知道這有乙個引數,這個參數列式開啟,還會有其它

def __init__

(self,use_huobei=false)

: self.use_huaei = use_huobei

def pay

(self,money)

:if self.use_huaei:

print

("花唄支付%d元."

% money)

else

:print

("支付寶餘額支付%d.元"

% money)

class wechatpay

(payment)

: def pay

(self,money)

:print

(% money)

#新加個支付就不用改代,就加個一鍵支付和對應的工廠類就可以了

class bankpay

(payment)

: def pay

(self,money)

:print

("銀行卡支付%d元."

% money)

#工廠類的介面

class paymentfactory

(metaclass=abcmeta)

: @abstractmethod

def create_payment

(self)

: pass

class alipayfactory

(paymentfactory)

: def create_payment

(self)

:return

alipay()

class wechatpayfactory

(paymentfactory)

: def create_payment

(self)

:return

wechatpay()

#花唄class huabeifactory

(paymentfactory)

: def create_payment

(self)

:return

alipay

(use_huobei=true)

#一鍵支付工廠類

class bankpayfactory

(paymentfactory)

: def create_payment

(self)

:return

bankpay()

#class paymentfactory:

# def create_payment(self,method):

# if method == 'alipay':

# return alipay()

# elif method == 'wechat':

# return wechatpay()

# elif method == 'huabei':

# #客戶端就不用知道知道這個引數了

# return alipay(use_huobei=true)

# else:

# raise typeerror("no such payment named %s" % method)

# client 這樣高曾**就不用讀你的邏輯了

#pf = paymentfactory()

#p = pf.create_payment('huabei')

#p.pay(100)

#pf = huabeifactory()

#p = pf.create_payment()

#p.pay(100)

pf =

bankpayfactory()

p = pf.

create_payment()

p.pay

(300

)

優點每個具體產品都對應乙個具體工廠類,不需要修改工廠類**

隱藏了物件建立的實現細節

缺點每增加乙個具體產品,就必須增加乙個相應的具體工廠類

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

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

工廠模式 PYTHON

工廠模式屬於建立模式列表類別。它提供了建立物件的最佳方法。在工廠模式中,建立物件時不會將邏輯公開給客戶端,並使用通用介面引用新建立的物件。工廠模式使用工廠方法在python中實現。當使用者呼叫乙個方法時,傳入乙個字串,並通過工廠方法實現建立乙個新物件,並將此物件作為返回值。工廠方法中使用的物件型別由...

python 工廠模式

python 工廠模式 工廠模式 工廠 即表示乙個負責建立其他型別的物件的類,通常情況下,乙個工廠的物件會有乙個或多個方法與之關聯,這些方法用於建立不同型別的物件,工廠物件會根據客戶端給方法傳遞的不同的引數返回不同的物件。優點 物件的建立是可以根據需要單獨建立的,但是使用工廠模式來建立物件有以下優點...