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

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

一分鐘了解python的責任鏈模式

2023-04-24 21:10 作者:bibnoifasdfadf  | 我要投稿

在 Python 中,Chain of Responsibility Pattern 是一種常用的設計模式。它是一種行為性模式,通常被用于處理多個對象之間的請求。該模式可以幫助我們更好地組織代碼,提高程序的靈活性和可維護性。下面我們將通過一個例子來說明 Chain of Responsibility Pattern 的應用。

?假設我們正在開發(fā)一個電商網(wǎng)站,這個網(wǎng)站需要處理用戶的訂單請求。用戶可以選擇不同的付款方式來支付訂單,比如信用卡、支付寶和微信支付等。我們需要設計一個程序,用于處理用戶的訂單請求,并選擇合適的付款方式進行支付。

?我們首先定義一個訂單類 Order,它包含一些基本的訂單信息,比如訂單編號、訂單金額和付款方式等。

class Order:

? ? def __init__(self, order_number, amount, payment_method):

? ? ? ? self.order_number = order_number

? ? ? ? self.amount = amount

? ? ? ? self.payment_method = payment_method

我們接下來定義一個付款處理器類 PaymentHandler,它是一個抽象類,用于處理付款請求。每個付款處理器類都應該實現(xiàn)一個 process 方法,用于處理付款請求。

from abc import ABC, abstractmethod

?class PaymentHandler(ABC):

? ? def __init__(self, successor=None):

? ? ? ? self.successor = successor

? ? ?@abstractmethod

? ? def process(self, order):

? ? ? ? pass

接下來我們定義具體的付款處理器類 CreditCardPaymentHandler、AlipayPaymentHandler 和 WeChatPaymentHandler,它們分別用于處理信用卡、支付寶和微信支付的請求。每個具體的付款處理器類都實現(xiàn)了 process 方法,用于處理付款請求。

class CreditCardPaymentHandler(PaymentHandler):

? ? def process(self, order):

? ? ? ? if order.payment_method == 'Credit Card':

? ? ? ? ? ? print(f"Payment processed with credit card. Order number: {order.order_number}")

? ? ? ? elif self.successor is not None:

? ? ? ? ? ? self.successor.process(order)

?class AlipayPaymentHandler(PaymentHandler):

? ? def process(self, order):

? ? ? ? if order.payment_method == 'Alipay':

? ? ? ? ? ? print(f"Payment processed with Alipay. Order number: {order.order_number}")

? ? ? ? elif self.successor is not None:

? ? ? ? ? ? self.successor.process(order)

?class WeChatPaymentHandler(PaymentHandler):

? ? def process(self, order):

? ? ? ? if order.payment_method == 'WeChat':

? ? ? ? ? ? print(f"Payment processed with WeChat. Order number: {order.order_number}")

? ? ? ? elif self.successor is not None:

? ? ? ? ? ? self.successor.process(order)

注意,每個具體的付款處理器類都繼承自抽象類 PaymentHandler,并實現(xiàn)了 process 方法。如果處理器無法處理當前訂單的付款方式,則將請求傳遞給下一個處理器,直到有一個處理器能夠處理為止。

?接下來我們需要組織具體的付款處理器類,形成一個鏈式結(jié)構。我們可以使用一個簡單的函數(shù)來實現(xiàn)這個過程。首先我們創(chuàng)建所有具體的付款處理器類的實例,然后按照它們能夠處理的付款方式的順序依次鏈接它們。

def create_chain():

? ? credit_card_handler = CreditCardPaymentHandler()

? ? alipay_handler = AlipayPaymentHandler()

? ? wechat_handler = WeChatPaymentHandler()

? ? credit_card_handler.successor = alipay_handler

? ? alipay_handler.successor = wechat_handler

? ? return credit_card_handler

在這個函數(shù)中,我們創(chuàng)建了 CreditCardPaymentHandler、AlipayPaymentHandler 和 WeChatPaymentHandler 三個具體的付款處理器類的實例,并將它們鏈接在一起,形成一個鏈式結(jié)構。

?現(xiàn)在我們可以使用這個鏈式結(jié)構來處理用戶的訂單請求了。例如:

chain = create_chain()

order1 = Order("0001", 50, "Credit Card")

order2 = Order("0002", 100, "Alipay")

order3 = Order("0003", 150, "WeChat")

chain.process(order1)

chain.process(order2)

chain.process(order3)

這個程序?qū)⑤敵鋈缦聝?nèi)容:

Payment processed with credit card. Order number: 0001

Payment processed with Alipay. Order number: 0002

Payment processed with WeChat. Order number: 0003

這個例子中,我們使用 Chain of Responsibility Pattern 來處理用戶的訂單請求。我們定義了一個抽象類 PaymentHandler,用于處理付款請求,并創(chuàng)建了具體的付款處理器類 CreditCardPaymentHandler、AlipayPaymentHandler 和 WeChatPaymentHandler,用于處理不同的付款方式。我們將這些處理器類鏈接起來,形成一個鏈式結(jié)構。當用戶發(fā)起訂單請求時,我們將其傳遞給鏈式結(jié)構的第一個處理器類,如果這個處理器類無法處理當前請求,則將其傳遞給下一個處理器類,直到有一個處理器類能夠處理為止。這個模式可以幫助我們更好地組織代碼,提高程序的靈活性和可維護性。


一分鐘了解python的責任鏈模式的評論 (共 條)

分享到微博請遵守國家法律
广丰县| 咸宁市| 惠水县| 台江县| 收藏| 年辖:市辖区| 余干县| 凤城市| 龙岩市| 喀喇沁旗| 福安市| 浦北县| 宜章县| 安西县| 咸宁市| 南宫市| 宁夏| 越西县| 瓮安县| 微博| 玉环县| 永平县| 焉耆| 株洲县| 和静县| 包头市| 垦利县| 南阳市| 丁青县| 格尔木市| 长沙县| 沐川县| 郧西县| 宁蒗| 茶陵县| 灵山县| 琼海市| 镇沅| 德化县| 宣武区| 灵台县|