■ 좋은 객체 지향 설계 5가지 원칙 (SOLID)
SRP(Single Responsibility Principle): 단일 책임 원칙
OCP(Open Closed Priciple): 개방 폐쇄 원칙
LSP(Listov Substitution Priciple): 리스코프 치환 원칙
ISP(Interface Segregation Principle): 인터페이스 분리 원칙
DIP(Dependency Inversion Principle): 의존 역전 원칙
코드 작성시 발생하는 DIP 문제 예시
클라이언트 코드 OrderServiceImpl 은 DiscountPolicy의 인터페이스 뿐만 아니라 구체 클래스도 함께 의존
→ 이를 해결하기 위함이 관심사 분리
→ 애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 생성
■ IoC, DI 컨테이너
● IoC(Inversion of Control): 제어의 역전
- 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리
● DI(Dependency Injection): 의존관계 주입
- 정적 클래스 의존 관계와 실행 시점에 결정되는 동적 객체(인스턴스) 의존 관계를 분리해서 생각
- 애플리케이션 실행시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서
클라이언트와 서버의 실제 의존관계가 연결 되는 것
- 객체 인스턴스 생성, 그 참조 값 전달
- 클라이언트 코드 변경 X -> 클라이언트 호출 대상 타입 인스턴스 변경 O
'Spring Study > Spring 기본' 카테고리의 다른 글
[Spring 기본] 의존관계 자동 주입 (0) | 2023.08.07 |
---|---|
[Spring 기본] 컴포넌트 스캔 (Component Scan) (0) | 2023.08.04 |
[Spring 기본] 싱글톤 컨테이너 (Singleton Container) (0) | 2023.08.03 |
[Spring 기본] 스프링 컨테이너/스프링 빈 (Spring Container/Bean) (0) | 2023.08.02 |
댓글