🤴Design Patterns

Software Design

❓ มันคืออะไร ?

Design patterns เป็นแนวคิดในการแก้ปัญหาที่เราเจอบ่อยๆในการออกแบบซอฟต์แวร์ ซึ่งถ้าเรามี ปัญหา แล้วปัญหานั้นมีลักษณะตรงกับ pattern ไหนก็ตาม เราก็จะสามารถนำแนวคิดของ pattern นั้นๆไปแก้ปัญหาของเราได้เลย

Pattern แต่ละตัวจะเป็นแค่ แนวคิดในการแก้ไขปัญหา เท่านั้น ซึ่งมันไม่ได้บอกชัดเจนว่าเราต้องมีทำอะไรบ้างเพื่อจะแก้ปัญหาที่เจอ ดังนั้นวิธีการแก้ปัญหาที่เจอจะขึ้นกับการตัดสินใจของ developer เอง

😒 ข้อดีข้อเสีย

👍 ข้อดี

  • เมื่อเกิดปัญหาในการออกแบบซอฟต์แวร์ สามารเอา pattern มาแก้ปัญหาได้เลย

  • สามารถรับมือเมื่อเจอกับ business requirement ที่ซับซ้อนได้

  • ลดการเกิด coupling, โค้ดยืดหยุ่นขึ้น, โค้ดนำกลับมาใช้ใหม่ได้

👎 ข้อเสีย

  • Design pattern แต่ละตัวไม่ได้เข้าใจง่ายสำหรับ developer มือใหม่

  • Developer ส่วนใหญ่จะนำ design pattern ไปใช้เลย โดยไม่ได้ชั่งน้ำหนักก่อนใช้ให้ดีก่อน ทำให้โค้ดมีความซับซ้อนเพิ่มขึ้นโดยไม่จำเป็น

triangle-exclamation

👑 กลุ่มของ patterns ต่างๆ

Pattern ทั้งหมดถูกแบ่งออกเป็น 3 กลุ่ม ตามวัตถุประสงค์ในการแก้ไขปัญหาของมัน โดยแต่ละกลุ่มจะช่วยให้โค้ดนั้น ลดการเกิด coupling, มีความยืดหยุ่นขึ้นและนำกลับมาใช้ใหม่ได้

🦈 Creational patterns

ช่วยในการออกแบบเมื่อจะสร้าง object ต่างๆ

Abstract Factorychevron-rightBuilderchevron-rightFactory Methodchevron-rightPrototypechevron-rightSingletonchevron-right

🦈 Structural patterns

ช่วยในการออกแบบโครงสร้างของ class ต่างๆ

Adapterchevron-rightBridgechevron-right
  • Composite pattern

Decoratorchevron-rightFacadechevron-right
  • Flyweight pattern

Proxychevron-right

🦈 Behavioral patterns

ช่วยในการออกแบบให้ class ต่างๆทำงานร่วมกัน

Chain of Responsibilitychevron-rightCommandchevron-right
  • Interpreter pattern

Iteratorchevron-rightMediatorchevron-rightMementochevron-rightObserverchevron-rightStatechevron-rightStrategychevron-rightTemplate Methodchevron-rightVisitorchevron-right
circle-exclamation
circle-info

เนื้อหานี้ผมเคยเขียนครั้งแรกไว้ที่ Github ถ้าสนใจก็เข้าไปดูได้จากลิงค์ด้านล่างนี้เลยนะครับ https://github.com/saladpuk/design-patternsarrow-up-right

Last updated

Was this helpful?