1. 단일 책임 원칙 (Single REsponsiblity Principle)
2. 개방-폐쇄 원칙 (Open-Closed Principle)
- 기존 코드를 수정하는 것을 최소화 하고 기능 추가 시 의존관계에 있는 다른 객체에 영향이 안가도록 설계 해야한다.
- 객체 확장은 개방적으로 하고 수정은 폐쇄적으로 진행해야함
- interface → 변경 되는 것이 무엇인지에 초점을 맞춤
3. 리스코프 치환 원칙 (Liskov Substitution Principle)
- 자식 클래스는 부모 클래스에서 가능한 행위를 수행 할 수 있어야 한다.
4. 의존 역전 원칙 (Dependency Inversion Principle)
- 의존 관계를 맺을 떄, 변화하기 쉬운것 보단 변화가 어려운 것에 의존 해야한다.
5. 인터페이스 분리 원칙 (Interface Segregation Principle)
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 하며, 하나의 일반적인 인터페이스 보다 여러개의 구체적인 인터페이스가 좋다.
- 자신이 사용하지 않는 기능에는 영향을 받지 말아야 한다.