Design Pattern ใน Python

Command Pattern in Python

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

Command Pattern คืออะไร?

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

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

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

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

รันโค้ด →
main.py
class Light:
    # Command: package a request as an object for later execution.
    def on(self): return "Light on"
    def off(self): return "Light off"


class LightCommand:
    def __init__(self, light, action):
        self.light, self.action = light, action

    def execute(self):
        # Store a request as data that can be invoked later.
        return getattr(self.light, self.action)()


light = Light()
for command in [LightCommand(light, "on"), LightCommand(light, "off")]:
    print(command.execute())

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

Light on
Light off

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

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

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

แบบฝึกหัด

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

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