內容: 定義要給用於建立物件介面(工廠介面),讓子類決定例項化哪乙個產品類
角色:抽象工廠角色(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 工廠模式 工廠模式 工廠 即表示乙個負責建立其他型別的物件的類,通常情況下,乙個工廠的物件會有乙個或多個方法與之關聯,這些方法用於建立不同型別的物件,工廠物件會根據客戶端給方法傳遞的不同的引數返回不同的物件。優點 物件的建立是可以根據需要單獨建立的,但是使用工廠模式來建立物件有以下優點...