Design Pattern ใน Python

Composite Pattern in Python

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

Composite Pattern คืออะไร?

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

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

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

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

รันโค้ด →
main.py
class Number:
    # Composite: leaves and containers expose the same operation.
    def __init__(self, value): self.value = value
    def total(self): return self.value


class Sum:
    def __init__(self, *children): self.children = children

    def total(self):
        # Treat leaves and nested groups uniformly.
        return sum(child.total() for child in self.children)


expression = Sum(Number(1), Sum(Number(2), Number(3)))
print(expression.total())

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

6

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

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

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

แบบฝึกหัด

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

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