Decorator Pattern
จาก บทความที่แล้วเรื่อง CVA บอกว่าถ้าหา common-variable จาก context of use ไปเรื่อยๆ จะเจอดีไซน์ที่ดีได้โดยไม่ต้องพยายามท่องจำ Design…

จาก บทความที่แล้วเรื่อง CVA บอกว่าถ้าหา common-variable จาก context of use ไปเรื่อยๆ จะเจอดีไซน์ที่ดีได้โดยไม่ต้องพยายามท่องจำ Design Pattern
ทำให้ดูอีกตัวอย่างนึง
Requirement
- ร้านกาแฟนางเงือก ขยายกิจการ ทำโปรแกรมคิดค่าชานม
- ชานมเลือกใส่ของเพิ่มเป็น ไข่มุก 10 บาท, เฉาก๊วย 15 บาท
- ราคาชานม คิดจาก ค่าชานม กับ ค่าของเพิ่มรวมๆกัน
Context of Use
โปรแกรมต้องการคิดราคาของชานม (ไม่ได้พูดถึงการชง สต็อกสินค้า ฯลฯ)

Common
ของเพิ่ม
- ใส่เพิ่มเข้าไปใน ชานม ได้เหมือนกัน
- มีราคาเหมือนกัน (เวลาคิดตังก็เอาราคาชา + ราคาของเพิ่มในชารวมๆกัน)

- มอง context เดิมอีกที ทั้งชานม และ ของเพิ่ม มี ราคา เอาไปคิดเงินได้เหมือนกัน กลายเป็นสินค้า (Product)

Variable
- ของเพิ่มมีหลายแบบ และราคาไม่เท่ากัน

ข้อสังเกต
- MilkTea ไม่ได้แยกออกมาเป็นชาหลายแบบ เพราะเห็นๆอยู่ว่ามีแบบเดียว
- เรียกว่า Product เพราะ context of use คือ การขายของ เลยไม่ได้เรียกว่า Drinks
- Requirement จริง ไม่ได้แยกออกมาให้เห็นง่ายขนาดนี้ จงเน้นความเข้าใจปัญหามากกว่าการแก้ปัญหา
- เมื่อเราเข้าใจปัญหา ดีไซน์และโค้ดที่เขียนออกมาก็จะเรียบง่าย