단일 책임 원칙 (Single Responsibility Principle)
- "모든 클래스 단 한개의 책임을 가져야 한다"
- 하나의 클래스가 두가지 다른 원인으로 변경되어야 한다면 두 개 이상의 책임을 가진것이므로 원칙에 어긋난다.
개방-폐쇄 원칙 (Open-Closed Principle)
- "확장에는 열려있고, 수정에는 닫혀 있어야 한다"
- 기존의 코드의 수정(수정에 닫혀)없이 새로운 기능을 추가(확장에 열려)할 수 있게 해준다.
- 공통되는 기능들을 인터페이스로 추상화하여 기능을 고정
- 지키지 않을 시 기능 추가 시 마다 타입 체크 및 if문을 통한 조건이 같이 추가됨.
리스코프 치환 원칙 (Liskov Substitution Principle)
- "상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다".
- 의존성 역전 원칙을 지원
인터페이스 분리 원칙 (Interface Segregation Principle)
- "구현체 스스로가 사용하지 않는 기능에 영향받지 않아야 한다"
- 인터페이스는 자신의 필요 기능에 대해 최소한으로 분리해야한다.
- 인터페이스가 필요 이상의 기능으로 정의되어 있다면 구현체에 불필요한 구현이 생긴다 -> ocp 위반
- 동일한 인터페이스의 구현체에 각각 다른 기능 구현이 필요한 경우 인터페이스를 상속하는 인터페이스를 만들어 해결
의존성 역전 원칙 (Dependency Inversion Principle)
- "구현이 직접 구현을 의존하면 안 되고, 구현은 추상을 의존하여 추상의 구현체를 주입 받아야한다"
- 같은 추상을 상속받은 구현체라면 주입받는 클래스는 코드수정없이 교체 가능하여 변화에 유연
- 런타임이 아닌 소스코드 작성 단계에서 의존을 역전
https://steady-coding.tistory.com/370
'Spring' 카테고리의 다른 글
[SpringBoot] DB 연결 없이 Spring Boot 실행 시 에러 해결 (2) | 2021.12.02 |
---|---|
[Spring] Spring Boot 로그 - slf4j 와 Logback, Log4j2 의 차이점 (0) | 2021.11.12 |
[Spring] 빈 후처리기 - BeanPostProcessor (0) | 2021.11.08 |
[Spring] 프록시 팩토리 (0) | 2021.11.08 |
[Spring] 프록시 패턴 (0) | 2021.11.05 |