티스토리 뷰

[4. 회원 도메인 개발 ~ (순수 자바코드로)]

Note

  1. 인터페이스의 구현체가 1개인 경우 관례 상 구현체의 이름을 인터페이스이름 + impl이라고 명명합니다.
  1. 순수 자바코드 할인 정책을 변경할 때 문제점 발생

    /* in OrderServiceImpl class */
    public class OrderServiceImpl implements OrderService{
    	//private final DiscountPolicy discountPolicy = new FixDiscountPolicy();
    	private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
    }
    • OrderSerivceImpl이 DiscountPolicy 인터페이스에 의존하며 DIP를 지킨 것 같지만 Fix, RateDiscountPolicy와 같은 구체화된 구현 클래스에도 의존하고 있음. (DIP위반)
    • 또한 고정 할인 정책에서 동적 할인 정책으로 바꿀 시 위와 같이 코드를 변경해야하는데 이는 OCP위반

    어떻게 해결 ?

    → 인터페이스에만 의존하도록 설계를 변경

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

    • App Config는 애플리케이션의 실제동작에 필요한 구현객체를 생성, 객체 인스턴스의 참조를 "생성자를 통해서 주입"

'Study > Spring' 카테고리의 다른 글

스프링 정리(1)  (0) 2021.08.03
IOC, DI, 컨테이너  (0) 2021.01.14
좋은 객체 지향 설계의 5원칙  (0) 2021.01.14
좋은 객체 지향 프로그래밍이란 ?  (0) 2021.01.05
스프링 시작 :)  (0) 2021.01.05
댓글