[Design Pattern] Decorator Pattern in Depth
ทำไมต้องใช้ Decorator Pattern อยากเพิ่มความสามารถของ Object (Object ทำงานเหมือนเดิมนะ แต่ถูกเพิ่มความสามารถ) เมื่อไหร่ควรจะใช้ ไม่อยากใช้คุณสมบัตินึงของ OOP-Inheritance มากเกินไป เพราะใช้ไปแล้ว ก็ต้อง Override ไปแก้ความสามารถที่ได้มาจาก Class แม่อีก หรือมี Class ลูก (Sub Class) ที่มากจนเกินไปครับ ซึ่งเจ้า Decorator มันมาช่วยตรงนี้ครับ ไม่ต้องแก้ แต่เราเพิ่ม (Wrap) ความสามารถใหม่ลงไป โดยที่ความสามารถเดิม ยังคงอยู่ ลดจำนวน Sub Class ลงได้ สนับสนุนแนวคิด Open-Close Principle ด้วย Open for Extension Closed for Modification Note: ไม่บอกว่าห้ามใช้ Inheritance นะครับ ใช้ให้มันพอดี ^__^ Pattern มันเป็นอย่างไร – Class Diagram Template ตัวอย่าง มุมมองตอน Runtime – Object Diagram ลักษณะของ Object หลังถูก Create มุมมองลำดับการทำงาน – Sequence Diagram ตอนสร้าง Object ตอนคำนวณราคา Real World Example Java.IO Class ไง มีการเพิ่มความสามารถจาก FileInputStream BufferedInputStream UpperCaseInputStream – สร้างเอง Code ของ Class UpperCaseInputStream เสริมความสามารถมาจาก FilterInputStream มาดู Code กันดีว่า ว่าเพิ่มความสามารถอย่างไร ? – อ่าน TestFile ซึ่ง FileInputStream มันอ่านที่ได้ละ…