반응형
SOLID의 원칙
- SRP(single responsibility principle) 단일 책임 원칙
- 중요한 기준은 변경! 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른것!
- OCP(open/closed principle) 개방-폐쇄 원칙 ***가장 중요
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 함 → 역할(인터페이스)과 구현(구현 클래스)의 분리, 다형성을 활용
- 그 전에 했던 memberservice에서는 구현 객체를 변경하려면 클라이언트 코드의 변경이 필요 즉 다형성을 사용했지만 OCP 원칙을 지킬 수 없게 되는 문제점 발생 → 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자가 필요 → 이것이 spring container인 DI, Ioc container
- LSP(Liskov substitution principle) 리스코프 치환 원칙
- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위한 원칙 예를 들어 자동차의 경우 하위 구현 객체는 엑셀이 앞으로 가야한다는 규칙을 지켜야함 만약 뒤로 가게 구현한다면 LSP원칙을 위반한것!
- ISP(Interface segregation principle) 인터페이스 분리 원칙
- 특정 클라이언트를 위해 범용 인터페이스 하나보단 여러 개로 분리! 예를 들어 자동차 인터페이스의 경우엔 운전 인터페이스와 정비 인터페이스로 분리할 수 있고 사용자 클라이언트의 경우 운전자, 정비사로 분리할 수 있음. 이는 인터페이스가 명확해지고 대체 가능성이 높아짐
- DIP(Dependency inversion principle) 의존관계 역전 원칙
- 구현이 아니라 역할(인터페이스)에 의존해야함. 즉 앞에서 썼던 memberservice의 경우엔 memberrepo뿐만 아니라 구현체인 memorymemberrepo에도 의존하고 있으므로 DIP원칙에 위배
.
- IoC(Inversion of Control) 제어의 역전
프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전이라고 한다.
우리가 사용했던 Test 어노테이션 같은 경우 junit이라는 프레임워크에 제어권을 넘김으로 제어의 역전이라고 볼 수 있음.
- DI(dependency injection) 의존관계 주입
애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것을 의존관계 주입이라 한다
의존관계는 정적인 클래스 의존관계와 동적인 객체 인스턴스 의존관계로 나뉠 수 있음.
- Ioc 컨테이너, DI 컨테이너
- Appconfig처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC컨테이너 또는 DI컨테이너라고 한다.
김영한님 기본편 강의 기본 개념 정리
반응형
'Back-end > Spring' 카테고리의 다른 글
Apache2와 내장 톰캣 연동 with springboot (0) | 2022.11.05 |
---|---|
intelliJ 명령어 정리!! (0) | 2022.08.12 |