- 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