Nine MVP's Blog

20/10/2009

Design Pattern Series I : What’s the Design Patterns

Filed under: Design Pattern — Nine MVP @ 8:19 pm

Design Pattern Series

  • Design Pattern Series I : What’s the Design Patterns

  • Design Pattern Series II : Abstract Factory Pattern  (next..)

Programming Level

  • OOP : Beginner
  • UML : Beginner

คำแนะนำ (Suggesstion)

ก่อนเข้าเรื่อง Design Pattern อยากแนะนำให้ทุกท่านเรียนรู้เกี่ยวกับ Object Oriented Analysis, Design and Programming ให้ได้ซักระดับ Beginner มาก่อนนะครับ เนื่องจากมีความสำคัญมากในการทำความเข้าใจและเรียนรู้เกี่ยวกับบทความ Design Pattern ทั้งหมดนี้

ความเป็นมาของบทความ Design Pattern ตอนแรกนี้ เนื่องจากต้องการแนะนำประวัติภาพกว้าง และความรู้เบื้องต้นต่าง ๆ ที่ควรรู้ไว้ก่อนครับ หากใครถามที่มาที่ไปกับเรา จะได้ยืดอกตอบได้ชัดเจน

What’s the Design Patterns

เนื่องจากการออกแบบและพัฒนาโปรแกรมในระบบ Object Oriented นั้น มักจะมีโจทย์ปัญหาที่เกิดขึ้นเสมอเกือบทุกครั้ง ทำให้มีการรวบรวมปัญหาต่าง ๆ และได้คิดค้นวิธีแนวทางในการแก้ไขโจทย์ปัญาเหล่านั้นขึ้น ซึ่งเกี่ยวข้องกับปัญหาด้าน Object Oriented Programming ทั้งหมด ดังนั้น Design Pattern ไม่ได้หมายถึงชุด Coding ที่เบ็ดเสร็จนะครับ แต่เป็นแค่เพียงแบบวิธีการปฏิบัติสามารถนำไปใช้งานใน Object Oriented Programming Language ได้ทุกภาษา ซึ่งต้องนำไปประยุกต์ใช้งานเพื่อแก้ปัญหาในระบบด้วยตัวเอง

History

Design Pattern ได้มีการคิดค้นมานานแล้วครับ โดยนาย Christopher Alexander ผู้เขียนหนังสือที่ชื่อว่า "A Pattern Language" ในปี 1977 จากนั้น ก็มีอีกหลายท่านช่วยกันคิดค้นสรุปแนวทางจนมาถึงปี 1995 ได้มีการตีพิมพ์หนังสือที่ชื่อว่า

Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 0-201-63361-2” โดย Gamma, Erich; Richard Helm, Ralph Johnson และ John Vlissides ซึ่งได้เขียนสรุป Pattern ออกมาทั้งหมด 23 Patterns ซึ่งเป็นที่ยอมรับกันอย่างกว้างขวางในปัจจุบัน และได้ขนานนามกันว่า Gang of Four และยังมีอีกหลาย pattern จากหนังสือเล่มเป็นที่ยอมรับกันเช่นกัน

 

Gang of Four 23 Design Patterns

GoF design pattern มีทั้งหมด 23 Patterns นั้นเราได้แบ่งแยกออกตามลักษณะไว้ดังนี้

  1. Creational patterns เป็นกลุ่มแพทเทิร์นที่ใช้แก้ปัญหาในการสร้างกลุ่มอ๊อปเจ็ก ซึ่งช่วยให้เราสามารถควบคุมลักษณะ จำนวนและวิธีการสร้าง โดยมีทั้งหมด 5 Patterns
    • Abstract factory pattern:   next vol..
    • Factory method pattern: 
    • Builder pattern: 
    • Prototype pattern:
    • Singleton pattern:
  2. Structural patterns เป็นกลุ่มแพทเทิร์นที่ใช้แก้ปัญหาในการออกแบบโครงสร้างของอ๊อปเจ็กที่ต้องมีความสัมพันธ์กันในรูปแบบโครงสร้าง ซึ่งมีทั้งหมด 7 patterns
    • Adapter pattern:
    • Bridge pattern:
    • Composite pattern: 
    • Decorator pattern: 
    • Facade pattern: 
    • Flyweight pattern:
    • Proxy pattern:
  3. Behavioral patterns เป็นกลุ่มแพทเทิร์นที่ใช้แก้ปัญหาในเรื่องพฤติกรรมการทำงานระหว่าง object ด้วยกัน ซึ่งมีทั้งหมด 11 Patterns
    • Chain of responsibility pattern:
    • Command pattern:
    • Interpreter pattern:
    • Iterator pattern:
    • Mediator pattern: 
    • Memento pattern:
    • Observer pattern:
    • State pattern: 
    • Strategy pattern: 
    • Template method pattern:
    • Visitor pattern:

Design Pattern Documentation

หลังจากเหล่า GoF ได้ออกหนังสือเล่มที่กล่าวไปข้างต้นแล้ว ทั้ง 4 ท่านได้เขียนเอกสารไว้ใช้อ้างอิงของ design pattern ขึ้น โดยมีโครงสร้างสาระตามหัวข้อด้านล่างนี้ ซึ่งบทความ Design Patterns ที่ผมจะเขียนต่อไปจะอ้างอิงบางหัวข้อจาก documentation นี้ครับ

  • Pattern Name and Classification: ชื่อของแพทเทิร์นเอาไว้เรียกกันให้คุ้นปาก และรู็จักกัน
  • Intent: จุดมุ่งหมายในการแก้ปัญหาของแพทเทิร์นนั้น ๆ และเหตุผลในการใช้งาน
  • Also Known As: ชื่อเรียกอื่น ๆ ของแพทเทิร์น
  • Motivation (Forces): ตัวอย่างเหตุการณ์ปัญหาที่สามารถใช้แพทเทิร์นมาแก้ปัญหาได้
  • Applicability: การใช้แพทเทิร์นเข้าแก้ปัญหาSituations in which this pattern is usable; the context for the pattern.
  • Structure: รูปภาพไดอะแกรม ไว้สื่อสารเพื่อสร้างความเข้าใจ ปัจจุบันเน้นใช้งาน Class Diagram และ Interaction Diagram (UML)
  • Participants: รายชื่อของ class, object ต่าง ๆ ทั้งหมดในแพทเทิร์น และบทบาทต่าง ๆ ที่กำหนดในแพทเทิร์น
  • Collaboration: เป็นส่วนที่บรรยายว่า class และ object ทั้งหมดที่ใช้ในแพทเทิร์นนั้นมีการทำงานกันอย่างในภายในแพทเทิร์น
  • Consequences: เป็นส่วนที่บรรยายถึงผลลัพธ์ ผลข้างเคียง และข้อแลกเปลี่ยนต่าง ๆ หากต้องใช้งานแพทเทิร์นดังกล่าว
  • Implementation: บรรยายวิธีการนำแพทเทิร์นไปใช้งาน อาจจะยกตัวอย่างศึกษา
  • Sample Code: แสดงตัวอย่างการแปลง UML Diagram ไปเป็น code ของแต่ละภาษา
  • Known Uses: แสดงตัวอย่างใช้งานแพทเทิร์นจริง 
  • Related Patterns: กล่าวถึงแพทเทิร์นอื่นที่มีความเกี่ยวข้องกัน หรือมีลักษณะคล้าย ๆ กัน

 

Next..

ตอนหน้าจะเขียน Abstract Factory Pattern ครับ

1 Comment »

  1. ติดตามครับ ชอบทุก บทความเลยครับเป็นกำลังใจให้น่ะครับไม่รู้ ว่า คนเดียวกันกับที่โพส ใน http://www.greatfriends.biz/ บ่อยๆ หรือเปล่า หุหุแต่ผมชอบครับ สู้ๆน่ะครับ

    Comment by วุ่น — 26/10/2009 @ 7:45 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: