객체 지향 원리 적용

2023. 9. 26. 07:04LECTURES/스프링 핵심 원리 기본편

정률 할인 기능 추가

코드

문제점

  • 할인 정책을 변경하려면 클라이언트인 OrderServiceImpl 코드를 고쳐야 함
    • Before : private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
    • After : private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
    • OCP 위반
  • OrderServiceImpl 클래스는 인터페이스인 DiscountPolicy 뿐만 아니라 구체 클래스인 FixDiscountPolicyRateDiscountPolicy에도 의존
    • DIP 위반
  • 구현체 없이는 코드를 실행할 수 없음
  • 구현 객체를 대신 생성하고 주입해 주는 클래스 필요

관심사의 분리

AppConfig의 등장

코드

  • 애플리케이션의 전체 동작 방식을 구성하기 위해 구현 객체를 생성하고 연결하는 책임을 가지는 별도의 설정 클래스

AppConfig 리팩터링

코드

IoC(Inversion Of Control) 제어의 역전

  • 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것
  • AppConfig처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너 또는 DI컨테이너라 함

스프링으로 전환

코드

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢

www.inflearn.com

 

'LECTURES > 스프링 핵심 원리 기본편' 카테고리의 다른 글

컴포넌트 스캔  (0) 2023.09.26
싱글톤 컨테이너  (0) 2023.09.26
스프링 컨테이너와 스프링 빈  (0) 2023.09.26
예제 만들기  (0) 2023.09.26
객체 지향 설계와 스프링  (0) 2023.09.26