五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一分鐘了解python的抽象工廠

2023-04-03 22:57 作者:bibnoifasdfadf  | 我要投稿

Python 抽象工廠模式是一種常用的設(shè)計(jì)模式,它主要的作用是提供一個(gè)接口來創(chuàng)建一系列相關(guān)或依賴對象的族系列,而無需指定實(shí)際創(chuàng)建的具體類。如果我們需要改變對象的類型,可以只需改變抽象工廠所創(chuàng)建的具體對象,而不必修改任何其他代碼。在本文中,我們將通過一個(gè)例子來詳細(xì)講解 Python 抽象工廠模式的用法。

?示例背景

?假設(shè)我們正在開發(fā)一個(gè)商城系統(tǒng),該系統(tǒng)要求支持多種支付方式,如現(xiàn)金、信用卡、支付寶和微信支付等。我們需要實(shí)現(xiàn)一個(gè)抽象工廠來創(chuàng)建不同類型的支付方式。

?定義抽象工廠

?首先,我們需要定義一個(gè)抽象工廠接口,該接口定義了創(chuàng)建不同支付方式的方法,包括 create_cash_pay()、create_credit_pay()、create_alipay() 和 create_wechat_pay():

?from abc import ABC, abstractmethod

?class PaymentFactory(ABC):

? ? @abstractmethod

? ? def create_cash_pay(self) -> 'CashPay':

? ? ? ? pass

? ? ?@abstractmethod

? ? def create_credit_pay(self) -> 'CreditPay':

? ? ? ? pass

? ? ?@abstractmethod

? ? def create_alipay(self) -> 'Alipay':

? ? ? ? pass

? ? ?@abstractmethod

? ? def create_wechat_pay(self) -> 'WechatPay':

? ? ? ? pass

?其中,abstractmethod 裝飾器用于指定該方法為抽象方法,子類必須實(shí)現(xiàn)該方法。

?定義具體工廠類

?接下來,我們需要定義具體的工廠類,例如現(xiàn)金支付工廠、信用卡支付工廠等等,這些工廠類都需要繼承自 PaymentFactory 抽象工廠,并實(shí)現(xiàn) create_cash_pay()、create_credit_pay()、create_alipay() 和 create_wechat_pay() 方法,例如:

?class CashPaymentFactory(PaymentFactory):

? ? def create_cash_pay(self) -> 'CashPay':

? ? ? ? return CashPay()

? ? ?def create_credit_pay(self) -> 'CreditPay':

? ? ? ? return None

? ? ?def create_alipay(self) -> 'Alipay':

? ? ? ? return Alipay()

? ? ?def create_wechat_pay(self) -> 'WechatPay':

? ? ? ? return WechatPay()

?class CreditPaymentFactory(PaymentFactory):

? ? def create_cash_pay(self) -> 'CashPay':

? ? ? ? return None

? ? ?def create_credit_pay(self) -> 'CreditPay':

? ? ? ? return CreditPay()

? ? ?def create_alipay(self) -> 'Alipay':

? ? ? ? return None

? ? ?def create_wechat_pay(self) -> 'WechatPay':

? ? ? ? return WechatPay()

?定義具體產(chǎn)品類

?然后,我們需要定義具體的產(chǎn)品類,包括現(xiàn)金支付、信用卡支付、支付寶和微信支付等。這些產(chǎn)品類都需要實(shí)現(xiàn)相應(yīng)的方法,例如:

?class CashPay:

? ? def pay(self, amount):

? ? ? ? print(f"Pay {amount} yuan in cash.")

?class CreditPay:

? ? def pay(self, amount):

? ? ? ? print(f"Pay {amount} yuan by credit card.")

?class Alipay:

? ? def pay(self, amount):

? ? ? ? print(f"Pay {amount} yuan by Alipay.")

?class WechatPay:

? ? def pay(self, amount):

? ? ? ? print(f"Pay {amount} yuan by Wechat Pay.")

?使用抽象工廠

?現(xiàn)在,我們可以在主程序中使用具體的工廠類來創(chuàng)建不同類型的支付方式,例如:

?if __name__ == "__main__":

? ? cash_factory = CashPaymentFactory()

? ? cash_pay = cash_factory.create_cash_pay()

? ? cash_pay.pay(100)

? ? ?credit_factory = CreditPaymentFactory()

? ? credit_pay = credit_factory.create_credit_pay()

? ? credit_pay.pay(200)

? ? ?alipay = cash_factory.create_alipay()

? ? alipay.pay(300)

? ? ?wechat_pay = credit_factory.create_wechat_pay()

? ? wechat_pay.pay(400)

?輸出如下:

?Pay 100 yuan in cash.

Pay 200 yuan by credit card.

Pay 300 yuan by Alipay.

Pay 400 yuan by Wechat Pay.

?通過使用抽象工廠模式,我們成功創(chuàng)建了不同類型的支付方式對象,而不需要直接實(shí)例化 CashPay、CreditPay、Alipay 或 WechatPay 類。在創(chuàng)建對象的過程中,我們只需要使用具體的工廠類來創(chuàng)建相應(yīng)的產(chǎn)品對象,從而實(shí)現(xiàn)了對象的解耦。這種方式非常方便,因?yàn)槲覀兛梢暂p松添加新的支付方式,只需要實(shí)現(xiàn)相應(yīng)的具體產(chǎn)品類和工廠類,而不需要修改主程序代碼。這樣,我們的代碼也更加具有可維護(hù)性。

?總結(jié)

?Python 抽象工廠模式是一種常見的設(shè)計(jì)模式,用于提供一個(gè)接口來創(chuàng)建一系列相關(guān)或依賴對象的族系列,而無需指定實(shí)際創(chuàng)建的具體類。在本文中,我們通過一個(gè)具體的例子,詳細(xì)介紹了 Python 抽象工廠模式的使用方法,包括定義抽象工廠、具體工廠和具體產(chǎn)品類的步驟。希望本文能幫助讀者更好地理解 Python 抽象工廠模式,并應(yīng)用到實(shí)際開發(fā)中。


一分鐘了解python的抽象工廠的評論 (共 條)

分享到微博請遵守國家法律
花垣县| 太和县| 安乡县| 陇南市| 临安市| 永济市| 九江市| 滦平县| 汾西县| 锡林郭勒盟| 漳平市| 和平县| 休宁县| 墨玉县| 酉阳| 呼图壁县| 台北市| 英吉沙县| 海晏县| 玉门市| 堆龙德庆县| 蛟河市| 武汉市| 历史| 邛崃市| 唐山市| 墨竹工卡县| 正蓝旗| 古交市| 延安市| 湟中县| 正宁县| 贡觉县| 宣威市| 资源县| 天津市| 黎平县| 海晏县| 博白县| 贞丰县| 蒙阴县|