最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的抽象工廠的評論 (共 條)

分享到微博請遵守國家法律
师宗县| 手游| 洪洞县| 乡宁县| 兴化市| 沙河市| 崇文区| 偏关县| 旌德县| 隆尧县| 开江县| 太仆寺旗| 荣昌县| 宁阳县| 丹棱县| 镇巴县| 汝州市| 西充县| 磐安县| 永年县| 南城县| 晋宁县| 霍州市| 广东省| 和平区| 公安县| 高阳县| 林西县| 佛山市| 唐河县| 鄄城县| 兴国县| 永德县| 济宁市| 岗巴县| 文安县| 聂拉木县| 莲花县| 黄大仙区| 象山县| 平凉市|