[Algorithm]Design Pattern Tutorials

 

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

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

ในการ Design Pattern นั้นจะพูดถึงเรื่อง Class , Object สะมากกว่าครับ ดังนั้นเราจึงต้องแยกประเภทของมันตามผลที่ได้จากการออกแบบซึ่งเราจะแบ่งได้เป็น 3 แบบใหญ่ๆ ซึ่งเป็นการนำเอาเรื่องของ Object-Oriented Programming มาประยุกต์ใช้เกิดให้เป็น Object-Oriented Design ขึ้นมา และสามารถนำไปประยกต์ใช้กับ  Model–View–Controller pattern ได้เป็นอย่างดีเลยครับ

ในรูปแบบแรกนั้นจะเป็นการแก้ปัญหาในการสร้าง Object ครับซึ่งที่ผมจะสอนก็มีแค่ Abstract Factory , Factory Method , Singleton สำหรับหมวดนี้

  • Structural Patterns
    1. Adapter
    2. Bridge
    3. Composite
    4. Decorator
    5. Facade
    6. Flyweight
    7. Proxy

ในรูปแบบนี้จะเป็นารแก้ปัญหาของการวางโครสร้างครับ ผมก็จะสอนแค่ Facade , Adapter สองเรื่องครับ

  • Behavioral Patterns
    1. Chain of Resp
    2. Command
    3. Interpreter
    4. Iterator
    5. Mediator
    6. Memento
    7. Observer
    8. State
    9. Strategy
    10. Template Method
    11. Visitor

ในรูปแบบนี้ก็จะเป็นการแก้ปัญหในเรื่อง พฤติกรรมของ Object และมีปฏิสัมพันธ์ระหว่าง Object ซึ่งผมจะสอนแค่ Strategy, Observer,Interpreter,Visitor ในหมวดนี้

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

รูปจาก : www.na-vigator.com

Credit: na-vigator.comth.wikipedia.org , avajava.com , sourcemaking.com ,net.tutsplus.com , java.dzone.com , en.wikipedia.org

Facebook Comments