SRP (Single Responsibility Principle) 단일 책임의 원칙
하나의 모듈이 하나의 책임을 가져야 한다.
모듈이 변경되는 이유가 한 가지여야 한다
장점
- 변경이 필요할 때 수정할 대상이 명확해진다.
ORP (Open-Closed Principle) 개방 폐쇄 원칙
- 확장에 대해 열려있고 수정에 대해서는 닫혀있어야 한다는 원칙
확장에 대해 열려있다: 요구사항이 변경될 때 새로운 동작을 추가하여 애플리케이션의 기능을 확장할 수 있다.
수정에 닫혀 있다: 기존의 코드를 수정하지 않고 애플리케이션의 동작을 추가하고나 변경할 수 있다.
→ 추상화에 의존하면 문제 해결 가능
ISP (Interface Segregation Principle) 인터페이스 분리 원칙
- 클라이언트의 목적과 용도에 적합한 인터페이스만 제공
- 모든 클라이언트가 자신의 관심에 맞는 public interface만 접근하여 불필요한 간섭을 최소화할 수 있다.
- 클라이언트에 따라 인터페이스를 분리하면 변경에 대한 영향을 더욱 세밀하게 제어할 수 있다.
LSP (Liskov Substitution Principle) 리스코프 치환 원칙
- 하위 타입은 상위 타입을 대체할 수 있어야 한다는 원칙
- 자식 클래스가 부모 클래스를 대체하기 위해 부모 클래스에 대한 클라이언트의 가정을 준수해야 한다.
- 클라이언트의 입장에서 생각해야 함!!
□ LSP를 위반할 수 있는 상황
DIP (Dependency Inversion Principle) 의존 역전 원칙
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안되며, 저수준 모듈이 고수준 모듈이 의존해야 한다
- 고수준 모듈: 입력과 출력으로부터 먼(비즈니스 관련) 추상화된 모듈
- 저수준 모듈: 입력과 출력으로부터 가까운(HTTP, DB, 캐시등) 구현 모듈
- 비즈니스와 관련된 부분이 세부 사항에는 의존하지 않는 설계 원칙을 의미
의존 역전 원칙이 위배되는 경우 개방 폐쇄 원칙 역시 위배될 가능성이 높다.
의존 역전 원칙에서 의존성이 역전되는 시점은 컴파일 시점이다.
# 참고한 사이트
'Backend > Spring' 카테고리의 다른 글
Component Scan (0) | 2024.01.09 |
---|---|
Singleton Container (0) | 2024.01.09 |
Container와 Bean (0) | 2024.01.08 |
스프링 핵심 원리 이해 1, 2 (0) | 2024.01.04 |