จากรูปแบบทั้ง 6 ที่ใช้ในการออกแบบขั้นพื้นฐานยังไม่เพียงพอสำหรับการนำไปออกแบบระบบงานที่มีความซับซ้อนและต้องการความยืดหยุ่นสูง ระบบงานที่ดีจะต้องง่ายต่อการปรับเปลี่ยนไปตามความต้องการที่เกิดขึ้นใหม่ ๆ ของผู้ใช้ระบบ การเพิ่มคุณลักษณะใหม่เข้าไปในระบบจะต้องสามารถทำได้ง่าย เหมือนกับการถอดประกอบชิ้นส่วนในผลิตภัณฑ์อื่น ๆ
ในหัวข้อนี้จะนำเสนอรูปแบบ 23 แบบ ที่เป็นนิยมนำมาออกแบบซอฟแวร์ โดยทั้ง 23 แบบนี้ถูกรวบรวมไว้ครั้งแรกในหนังสือ The Reusable of Software Design Pattern ซึ่งเขียนโดย GoF[1] และตีพิมพ์เผยแพร่เมื่อปี 1995 จนกระทั่งถึงปัจจุบันจะพบว่าเฟรมเวิร์ค[2]เกือบทั้งหมดมีการนำหลักการของ Design Pattern เข้าไปร่วมด้วยไม่มากก็น้อย
ตารางที่ 2 รูปแบบทั้ง 23 แบบของ GoF
| Pattern | Intent |
| 1. Abstract Factory | Interface สำหรับสร้าง Product ที่อยู่ในตระกูลเดียวกัน โดยที่ Client ไม่จำเป็นต้องรู้ว่ากระบวนการสร้างเป็นอย่างไร และ Product ในตระกูลทำงานร่วมกัน |
| 2. Builder | แยกกระบวนการสร้างวัตถุที่มีโครงสร้างซับซ้อน ออกจากส่วนแสดงผลเพื่อที่จะใช้กระบวนการสร้างแบบเดียวกันนี้ได้กับการแสดงผลหลายแบบ |
| 3. Factory Method | สร้าง Framework สำหรับให้ Subclass มา Override เพื่อสร้างวัตถุที่ต้องการ |
| 4. Prototype | สร้าง Object ขึ้นมาใหม่โดย Copy จากตัวที่ใช้เป็นแม่แบบอยู่แล้ว |
| 5. Singleton | ต้องการควบคุมให้มี Object เพียงตัวเดียวเท่านั้นตลอดการใช้งาน |
| 6. Adapter | เชื่อมต่อเข้ากับอีกระบบที่มี Interface ไม่ตรงกัน โดยห่อหุ้ม (Wrap) อีกระบบหนึ่งด้วย Interface ที่ทำขึ้นมาใหม่ให้ตรงใจเรา |
| 7. Bridge | แยกส่วน Abstract ออกจากส่วน Implementation เพื่อที่สองส่วนนี้จะได้เปลี่ยนแปลงไปได้อย่างอิสระ |
| 8. Composite | สร้างโครงสร้างของ Object ในรูปแบบโครงสร้างแบบต้นไม้ (Tree) |
| 9. Decorator | ต่อเติมส่วนประกอบของ Object ในขณะ Runtime โดยไม่จำเป็นต้อง Subclass แล้ว Override |
| 10. Façade | รวบรวมการสั่งงานทั้งระบบมาไว้ที่ Interface เดียวกัน เพื่อให้ใช้ระบบได้ง่าย |
| 11. Flyweight | เมื่อต้องรับมือกับ Object จำนวนมหาศาล |
| 12. Proxy | เมื่อต้องการป้องกันการเข้าถึงตัว Object โดยแทรกงานบางอย่างเข้าไปก่อน |
| 13. Chain of Responsibility | ส่งงานให้กับ Object ทุกตัวที่อยู่ในสายงาน จนกว่าจะมีตัวใดตัวหนึ่งช่วยทำจนเสร็จ |
| 14. Command | ทำให้คำสั่งงานเป็น Object เพื่อที่จะได้เก็บไว้ในคิวงานหรือ Undo ได้ |
| 15. Interpreter | สร้างไวยากรณ์ภาษาขึ้นใช้เองในแอพพลิเคชัน |
| 16. Iterator | เข้าถึง Object ทุกตัวที่อยู่ในกลุ่ม โดยที่ไม่จำเป็นต้องรู้โครงสร้างภายใน |
| 17. Mediator | เป็นคนกลางคอยรับส่งงานให้กับ Object ที่อยู่ในกลุ่ม โดยไม่ต้องให้ Object เหล่านั้นเชื่อมต่อกันโดยตรง |
| 18. Memento | ทำให้ Object สามารถคืนสู่สภาพเดิมได้ |
| 19. Observer | เมื่อ Object มีการเปลี่ยนแปลง ทุกตัวที่สังเกตการณ์อยู่จะได้รับสัญญาณ |
| 20. State | เมื่อ Object เปลี่ยนสถานะ ทำให้มีการกระทำที่แตกต่างกันออกไป |
| 21. Strategy | กลุ่มของ Algorithm ที่สามารถสลับสับเปลี่ยนได้ในขณะ Runtime |
| 22. Template Method | ขั้นตอนการทำงานอยู่ใน Method ของคลาสแม่ แต่วิธีทำในแต่ละขั้นตอนอยู่ในคลาสลูก |
| 23. Visitor | แยกกระบวนการที่ต้องทำกับ Object ทุกตัวในโครงสร้างออกมาเพื่อให้สามารถเพิ่มกระบวนการใหม่ ๆ ให้กับ Object ในโครงสร้างได้โดยที่ไม่กระทบโครงสร้าง |
ทั้ง 23 แบบนี้จะถูกแบ่งออกเป็น 3 กลุ่มเพื่อใช้สำหรับแก้ปัญหาหลักในการออกแบบ 3 อย่าง คือ
1. Creational Pattern ใช้สำหรับแก้ปัญหาการสร้างวัตถุว่าทำอย่างไรจึงจะสามารถจัดรูปแบบการสร้างวัตถุให้อยู่ในแบบที่ง่ายต่อการเปลี่ยนแปลง เมื่อมีวัตถุชนิดใหม่เกิดขึ้นในอนาคตเราจะต้องเปลี่ยนแปลงน้อยที่สุด แต่สามารถนำระบบไปใช้ต่อได้ทันที
2. Structural Pattern ใช้สำหรับแก้ปัญหาการจัดวางโครงสร้างและองค์ประกอบของวัตถุ เพื่อให้วัตถุมาประกอบต่อกันด้วยโครงสร้างที่ง่ายต่อการเปลี่ยนแปลงในอนาคต เปรียบเสมือนกับการเสียบปลั๊กไฟ หรือการถอดชิ้นส่วนในอุปกรณ์ไฟฟ้า ซึ่งจะต้องมีโครงสร้างยืดหยุ่นพอที่จะถอดประกอบได้ตลอดเวลา
3. Behavioral Pattern ใช้สำหรับแก้ปัญหาการแปรเปลี่ยนการทำงานของวัตถุ เพื่อให้วัตถุสามารถทำงานที่แตกต่างกันในสภาวะแวดล้อมที่แตกต่างกันได้ ในอนาคตโดยไม่ต้องเปลี่ยนแปลงส่วนการทำงานหลักของวัตถุ นอกจากนั้นยังใช้สำหรับแก้ปัญหาการใช้เงื่อนไขในโปรแกรมที่สลับซับซ้อนจนยากต่อการถอดประกอบ เมื่อใช้รูปแบบในกลุ่มนี้จะช่วยลดความซับซ้อนและเพิ่มความเป็นระเบียบแบบแผนให้กับการทำงานของวัตถุได้

รูปภาพ 33 ตัวอย่างการใช้รูปแบบ Abstract Factory และ Factory Method ใน Java Messaging Service
ตารางที่ 3 ประเภทของ Design Pattern ทั้ง 3 ประเภทแยกตามรูปแบบการนำไปแก้ปัญหา
| Creational Pattern | Structural Pattern | Behavioral Pattern |
| Abstract Factory Builder Factory Method Prototype Singleton | Composite Bridge Adapter Decorator Flyweight Proxy Façade | Observer Mediator Visitor Iterator Memento Strategy State Template Method Chain of Responsibility Interpreter Command |
[1] GoF ย่อมาจาก Gang of Four นำทีมโดย Eric Gamma
[2] เช่น Java 2 Standard Edition, Java 2 Enterprise Edition, .NET Framework หรือแม้แต่แอพพลิเคชันทางธุรกิจทั่วๆไป
