The Observer Pattern
The Observer Pattern

เราเปรียบการทำงานของ observer pattern เสมือนการทำงานของการรับหนังสือพิมพ์หรือ magazine
มี Subjectผู้ส่งสาร และ ผู้รับ Observers
ซึ่งความสัมพันธ์ของ Subject ต่อ Observers เป็น 1 to many
1 Subject ต่อ Observers หลายคน
นิยามของ The Observer Pattern
“The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically”
Q:ทำไมต้องเป็น 1 to many?
A: ด้วย Observer patterns ตัว Subject เป็น object ที่ตรวจสอบและควบคุม State ดังนั้น 1 subject จะมีเพียง 1 state ในทางกลับกันสำหรับ observers ใช้ state ตัวนี้ทั้งที่ไม่ได้เกี่ยวกับมันเลย เรามีหลาย observers ซึ่งขึ้นอยู่กับ สถานะของ Subject ตัวเดียวซึ่งจะบอกพวกมันเมื่อมีการเปลี่ยนแปลง state
Q:how does dependence come into this?
A:เพราะ subject เป็นเจ้าของ data และถ้าหากมีการเปลี่ยนแปลงข้อมูล จะมีการ update ไปที่ observers อัตโนมัติ สิ่งนี้นำไปสู่ OO design ที่ดีกว่าการให้ object(observers) ทั้งหลายจัดการข้อมูลใน resource เดียวกัน
The power of loose coupling
เมื่อ 2 object มีความสัมพันธ์กันอย่างหลวมๆ มันสามารถติดต่อกันได้ แต่ รู้ความเกี่ยวกับกันและกันน้อยมาก
เช่นเดียวกับ Observer Pattern ที่ Subject และ observer เป็น loose coupling
ทำไม?
-Subject รู้เพียงอย่างเดียวเกี่ยวกับ Observer ก็คือ Observer implement interface ใด(Observer Interface) : โดยไม่จำเป็นต้องรู้ว่า object ของ Observer ทำงานอะไร
-เราสามารถเพิ่ม แก้ไข หรือ ลบ observer ตอนไหนก็ได้
-เรา ไม่จำเป็นต้อง แก้ไข subject เมื่อมีการเพิ่ม types ของ observer: ขอเพียงแค่สร้าง class ใหม่ที่ implement interface observer subject จะส่ง notification(update) ให้กับ ทุกๆ object ที่ implement Observer interface
-เราสามารถ reuse subject หรือ observers อย่างอิสระ
สรุป: มันยืดหยุ่นต่อการ modified แต่ละ object อย่างอิสระ
ส่วนเพิ่มเติมเอาเก็บไว้ที่ GoogleDocs เหมือนเดิม
The Observer Pattern
