SRP란
한 클래스는 하나의 책임만 가져야 한다.
Single responsibility principle
- 하나의 클래스는 하나의 역할만을 해야한다.
- 예를 들어, 할인 정책, 회원 관리, 주문 관리 등의 역할부터
- 구현 객체를 생성, 연결, 실행 하는 등의 관심사도 분리가 필요하다.
OCP란
확장에는 열려있지만, 변경에는 닫혀있어야 한다.
Open/Closed principle
- 소프트웨어 요소를 확장하더라도 코드를 변경할 필요가 없다는 의미이다.
- 다형성(인터페이스)과 DI를 이용해 이 원칙을 지킬 수 있다.
DIP란
구체화에 의존하는 것이 아니라, 추상화에 의존해야 한다.
의존관계 주입(Dependency Injection)은 이 원칙을 따르는 방법 중 하나다.
Dependency inversion principle
- 클래스는 구체화된 구현체에 의존하지 않아야 한다는 의미이다.
- 즉, 인터페이스(추상화)에 의존하면 된다.
- OCP와 마찬가지로 다형성과 외부에서의 DI를 통해서 지켜질 수 있다.
참고: 스프링 핵심 원리 - 기본편 (김영한)