-
[Spring] SOLID | 좋은 객체 지향 설계의 5가지 원칙Spring 2023. 2. 11. 18:41
SOLID
- SRP: 단일 책임 원칙 (Single responsibility principle)
- OCP: 개방-폐쇄 원칙 (Open/closed principle)
- LSP: 리스코프 치환 원칙 (Liskov substitution principle)
- ISP: 인터페이스 분리 원칙 (Interface segregation principle)
- DIP: 의존관계 역전 원칙 (Dependency inversion principle)
1️⃣ SRP 단일 책임 원칙 Single responsibility principle
- 한 클래스는 하나의 책임만 가져야 한다.
- 하나의 책임이라는 것은 모호하다.
- 클 수 있고, 작을 수 있다.
- 문맥과 상황에 따라 다르다. - 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다.
2️⃣ OCP 개방-폐쇄 원칙 Open/closed principle
- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
- 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현한다.
- 다형성을 활용한다.
3️⃣ LSP 리스코프 치환 원칙 Liskov substitution principle
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다.
- 다형성을 지원하기 위한 원칙
- 인터페이스를 구현한 구현체를 믿고 사용하려면 이 원칙이 필요하다.
4️⃣ ISP 인터페이스 분리 원칙 Interface segregation principle
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 인터페이스가 명확해지고, 대체 가능성이 높아진다.
5️⃣ DIP 의존관계 역전 원칙 Dependency inversion principle
- 구체화(구현 클래스)에 의존하면 안 되고, 추상화(인터페이스)에 의존해야 한다.
* 본 포스팅은 인프런 김영한님의 강의를 참고하여 작성한 글입니다.
728x90'Spring' 카테고리의 다른 글
[Spring] 테스트 코드에서의 @Transactional 사용 (0) 2023.05.30 [Spring] 네이버 도서 검색 API 활용하기 (0) 2023.04.22 [Spring] Spring boot가 자동 등록하는 HandlerMapping과 HandlerAdapter (0) 2023.03.14 [Spring] Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core (0) 2023.03.09 [Spring] 리소스를 식별하는 통일된 방식 | URI, URL, URN (0) 2023.03.02