Design Pattern ใน Python

Chain of Responsibility Pattern in Python

เรียนรู้ Chain of Responsibility Pattern in Python ด้วยตัวอย่างที่แก้ไขและรันออนไลน์ได้

Chain of Responsibility Pattern คืออะไร?

เรียนรู้ Chain of Responsibility Pattern in Python ด้วยตัวอย่างที่แก้ไขและรันออนไลน์ได้

ควรใช้เมื่อใด?

  • แก้ปัญหาการออกแบบออบเจ็กต์ที่เกิดซ้ำด้วยโครงสร้างที่ผ่านการพิสูจน์แล้ว
  • แยกความรับผิดชอบเพื่อให้ขยายและทดสอบโค้ดได้ง่ายขึ้น
  • ใช้คำศัพท์ด้านการออกแบบร่วมกันเมื่อพูดคุยเรื่องสถาปัตยกรรมกับทีม

โค้ดตัวอย่าง

รันโค้ด →
main.py
class Approver:
    # Chain of Responsibility: offer a request to handlers in order.
    def __init__(self, name, limit, next_approver=None):
        self.name, self.limit, self.next = name, limit, next_approver

    def approve(self, amount):
        # Handle locally or pass the request along the chain.
        if amount <= self.limit:
            return f"{self.name} approved {amount}"
        if self.next:
            return self.next.approve(amount)
        return "Declined"


chain = Approver("Lead", 100, Approver("Manager", 1000))
print(chain.approve(500))

ผลลัพธ์ที่คาดหวัง

Manager approved 500

หลักการทำงาน

ตัวอย่างนี้สาธิต Chain of Responsibility Pattern in Python ลองเปลี่ยนค่าอินพุตเพื่อศึกษาการทำงานของโค้ด

เปลี่ยนค่าและรันโปรแกรมด้วย คอมไพเลอร์ Python ออนไลน์ของ CodeUtility โดยไม่ต้องติดตั้ง Python

แบบฝึกหัด

ลองเปลี่ยน input และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น

  1. เปลี่ยนโดเมนของตัวอย่างโดยยังคงโครงสร้างของแพตเทิร์นไว้
  2. เปรียบเทียบแพตเทิร์นกับการเขียนแบบที่ง่ายกว่าและอธิบายข้อแลกเปลี่ยน
  3. เขียนการทดสอบให้ผู้มีส่วนร่วมแต่ละส่วนก่อนเพิ่มการเขียนแบบอื่น
รันใน Python IDE →