Design principle


  • Encapsulate what varies. - Identify the aspects of your application that vary and separate them from what stays the same.
  • Program to an interface, not an implementation.
  • Favor composition over inheritances.
  • Strive for loosely coupled designs between objects that interact.
  • Classes should be open for extension, but closed for modification.
  • Depend upon abstractions. Do not depend upon concrete classes.
  • Only talk to your friends.
  • Don't call us, we'll call you.
  • A class should have only one reason to change.

หรือในอีกมุมหนึ่งจะดูตามหัวข้อ

  • Communication Path and Access Channel 
    • Communication Path เป็นการกำหนดเส้นทางสือสารระหว่าง Element ต่างๆ
    • Access Channel เป็นการกำหนดการเข้าถึง Element
  • Coupling and Cohesion
  • Modularity คือการกำหนดหน้าที่ (method) และคุณสมบัติ (property) ให้โมดูลมีความสมบูรณ์ และมีความอิสระ ไม่พึ่งพาโมดูลอื่นๆ
  • Classification ต้องใช้ Design Principle หลายชนิด 
    • Association, Aggretation, Composition
    • Hierarchy, Generalization, Specialization
    • Packaging
  • Hierarchy, Generalization and Specialization
  • Information Hiding, Encapsulation and Abstraction
  • Contract, Boundary and Interface Design
  • Capability, Operation and Method
  • Dispatch and Delegate
  • Association, Aggregation and Composition


Reference: Head First Design Patterns - O'reilly

No comments:

Post a Comment