We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✉refact: 주문 시 할인 정책 변경
// private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy();
한 클래스는 하나의 책임만 가져야 한다
클라이언트 객체는 직접 구현 객체를 생성, 연결, 실행하는 다양한 책임을 갖고 있음
구현체가 아닌 역할에 의존
OrderServiceImpl이 interface인 DiscountPolicy를 의존하는 것 처럼 보이지만, 실제론 FixDiscountPolicy에도 의존하고 있음
OrderServiceImpl
FixDiscountPolicy
수정에 닫혀있고(코드 수정 X) 확장하는 것
FixDiscountPolicy를 RateDiscountPolicy로 변경하는 순간 OrderServiceImpl의 코드도 함께 변경해야 한다는 문제 발생 구현(class)과 역할(interface)을 분리한 것 처럼 보이지만 기존 코드를 수정했기에 완벽한 분리가 아님
RateDiscountPolicy
DiscountPolicy
The text was updated successfully, but these errors were encountered:
88918c5
No branches or pull requests
What
✉refact: 주문 시 할인 정책 변경
SRP 위반
클라이언트 객체는 직접 구현 객체를 생성, 연결, 실행하는 다양한 책임을 갖고 있음
DIP 위반
OrderServiceImpl
이 interface인 DiscountPolicy를 의존하는 것 처럼 보이지만,실제론
FixDiscountPolicy
에도 의존하고 있음OCP 위반
FixDiscountPolicy
를RateDiscountPolicy
로 변경하는 순간OrderServiceImpl
의 코드도 함께 변경해야 한다는 문제 발생구현(class)과 역할(interface)을 분리한 것 처럼 보이지만 기존 코드를 수정했기에 완벽한 분리가 아님
Solution
OrderServiceImpl
에DiscountPolicy
의 구현 객체를 대신 생성하고 주입해야 한다.The text was updated successfully, but these errors were encountered: