- 바뀌는 부분은 캡슐화 한다.
- 상속보다는 구성을 활용한다.
- 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.
- 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야한다.
- 클래스는 확장에 대해서는 열려있지만, 변경에 대해서는 닫혀있어야 한다. (Open-Close Principle)
- 추상화 된 것에 의존하라. 구상 클래스에 의존하지 않도록 한다.
- 친한 친구들 하고만 이야기 한다.
- 먼저 연락하지 마세요. 저희가 연락 드리겠습니다.
- 어떤 클래스가 바뀌게 되는 이유는 한 가지 뿐 이어야 한다.
[출처] Head First Design Patterns - 스토리가 있는 패턴 학습법