- 바뀌는 부분은 캡슐화한다
- 상속보다는 구성을 활용한다
- 인터페이스에 맞춘다
- 느슨한 결합을 최대한 이용한다
- 확장에는 열려있고 변경에는 닫혀있다(OCP)
- 추상화에 의존해라
- Strategy 변경될 수 있는 부분을 객체로 분리 후 구성을 활용
- Observer 변경이 발생시 푸시 또는 풀을 이용해 자동으로 갱신되게하는 방법
- Decorator 객체에 다른 객체를 동적으로 추가할 수 있는 방법
- Factory 객체 생성을 다른 클래스 또는 정적 메소드에 위임하는 방법
- Singleton 프로그램 상에 단 하나만 존재하는 객체를 만드는 방법
- Command 객체의 동작을 캡슐화 하는 방법