💡 객체 지향 원칙
DIP,OCP,SRP 위반 -> 관심사 분리
DIP = 추상화된 것에만 의존 / OCP = 클라이언트 코드의 불변 / SRP = 단일 책임 원칙
이번 예제는 DIP 충족을 위한 코드변경 예시이며,
AppConfig는 코드의 중복이 존재하고 역할에 따른 '구현'이 불안정
DIP충족을 위한 예시로 대충 이해 용도로만 보자
- 기존의 코드는 클라이언트(구현 클래스)가 인터페이스,구현체에 의존함
- 클라이언트(구현 클래스)는 순수하게 인터페이스에만 의존하고 구체적인 구현체를 몰라야함
- AppConfig 파일을 생성해서 구체적인 구현 객체 생성을 AppConfig에서 담당 (관심사 분리)
- AppConfig 파일을 통해 구체적인 구현체의 의존성을 외부에서 주입받는것으로 (Dependendy Injection)
DIP 를 충족한 코드가 되며 유지보수성이 좋아지고, 요구사항의 변경에 유연한 설계 가능
💡 AppConfig 리팩터링
역할과 구현클래스를 나눔으로써 어플리케이션 전체구성의 가독성이 좋아지고 중복이 제거됨
코드 변경시 다른 코드들에 영향이 없음
만약 할인정책을 변경하고 싶으면 변경에 영향을 받을 파일은 AppConfig밖에 없다
DI Container
- AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해줌
'Inflearn 강의 > Spring 핵심원리 기본' 카테고리의 다른 글
6 - @Confituration과 Singleton / 바이트코드 조작 (0) | 2022.10.17 |
---|---|
5 - Singleton Container with Stateless (0) | 2022.10.17 |
4 - Singleton Pattern (0) | 2022.10.17 |
3 - Bean 조회 (0) | 2022.10.17 |
2 - Spring 사용하여 개발 (1) | 2022.10.15 |