ดีไซน์แพตเทิร์น
บทความนี้ไม่มีการอ้างอิงจากแหล่งที่มาใด |
ดีไซน์แพตเทิร์น (อังกฤษ: Design Patterns) คือแบบแผนหรือแนวทางที่ใช้ในการแก้ไขปัญหาที่เกิดขึ้นเสมอๆ ในการออกแบบคอมพิวเตอร์ซอฟต์แวร์ แบบแผนและแนวทางเหล่านี้ไม่ใช่รูปแบบตายตัวที่จะถูกนำไปใช้โดยตรง แต่เป็นการอธิบายแนวทางหรือโครงที่จะถูกนำไปประยุกต์ใช้ในสถานการณ์ต่างๆ กล่าวเฉพาะในทางการเขียนโปรแกรมเชิงวัตถุ ดีไซน์แพตเทิร์นจะแสดงความสัมพันธ์ต่อกันระหว่างคลาสหรืออ็อบเจกต์ต่างๆ โดยไม่จำเพาะเจาะจงการนำไปใช้งานในขั้นสุดท้าย ขั้นตอนวิธีไม่จัดเป็นดีไซน์แพตเทิร์นเพราะเป็นการแก้ปัญหาในทางการประมวลผลมากกว่าในทางการออกแบบ
จุดเริ่มต้น[แก้]
ดีไซน์แพตเทิร์นมีจุดเริ่มต้นจากหนังสือชื่อ A Pattern Language: Towns, Buildings, Construction แต่งโดยสถาปนิกชื่อ Christopher Alexander เมื่อปี ค.ศ. 1977 จากนั้น Kent Beck และ Ward Cunningham ริเริ่มนำเอาแนวคิดนี้มาทดลองใช้กับการเขียนโปรแกรมในปี ค.ศ. 1987 และได้นำเสนอผลงานในงานประชุม OOPSLA ในปีเดียวกันนั้น
ดีไซน์แพตเทิร์นเริ่มเป็นที่นิยมในวงการวิทยาการคอมพิวเตอร์ในปี ค.ศ. 1994 หลังจากมีหนังสือที่แต่งโดย Erich Gamma, Richard Helm, Ralph Johnson และ John Vlissides (Gang of four: GoF) ชื่อ Design Patterns: Elements of Reusable Object-Oriented Software (ISBN 0-201-63361-2)
ประโยชน์[แก้]
ดีไซน์แพตเทิร์นช่วยทำให้กระบวนการพัฒนาโปรแกรมรวดเร็วขึ้นเพราะเป็นตัวอย่างที่ผ่านการพิสูจน์ทดสอบมาแล้ว การออกแบบซอฟต์แวร์ที่ดีต้องเตรียมการสำหรับปัญหาที่อาจจะไม่พบจนกว่าจะเริ่มนำไปใช้งาน การใช้ดีไซน์แพตเทิร์นช่วยป้องกันปัญหาเล็กน้อยที่อาจจะลุกลามใหญ่โต ทั้งยังทำให้การทำความเข้าใจโค้ดง่ายขึ้นในหมู่ผู้ร่วมงานในทีมที่คุ้นเคยกับดีไซน์แพตเทิร์น
การจัดหมวดหมู่และแพตเทิร์นในหนังสือ Design Patterns[แก้]
การจัดหมวดหมู่ดีไซน์แพตเทิร์นตามหนังสือ Design Patterns แบ่งตามวัตถุประสงค์การใช้งาน ดังนี้
แพตเทิร์นการสร้างอ็อบเจกต์ (creational patterns)[แก้]
แพตเทิร์นโครงสร้าง (structural patterns)[แก้]
แพตเทิร์นพฤติกรรม (behavioral patterns)[แก้]
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template method
- Visitor
หมวดหมู่แพตเทิร์นอื่นๆ[แก้]
- concurrency patterns
- architectural patterns
ดูเพิ่ม[แก้]
![]() |
บทความเกี่ยวกับซอฟต์แวร์ หรือ โปรแกรมคอมพิวเตอร์นี้ยังเป็นโครง คุณสามารถช่วยวิกิพีเดียได้โดยการเพิ่มเติมข้อมูล |