Head First Design Patterns 책에 나온 객체지향 9가지 원칙
1. 바뀌는 부분은 캡슐화한다.
2. 상속보다는 구성을 활용한다.
3. 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다.
4. 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
5. 클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다 (OCP : Open-Closed Principle)
6. 추상화된 것에 의존하라. 구상 클래스에 의존하지 않도록 한다.
7. 최소 지식 원칙 (데메테르의 법칙) - 친한 친구들하고만 이야기한다.
8. 먼저 연락하지 마세요. 저희가 연락 드리겠습니다.
9. 어떤 클래스가 바뀌게 되는 이유는 한 가지 뿐이어야만 한다.