Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

정책 변경, DIP & OCP 위반 본문

인프런/[인프런] Spring 핵심원리 이해

정책 변경, DIP & OCP 위반

Seung__ 2021. 7. 25. 18:51

https://github.com/bsh6463/SpringCoreFunction1. 정책 변경


  • 할인 정책을 바꾸기 위해서는 DiscountPolicy의 구현체를 바꿔줘야 한다.
  • OrderServiceImpl은 현재 FixDiscountPolicy를 의존하고 있다.

  • FixDiscountPolicy를 RateDiscountPolicy로 변경
  • 하지만 할인 정책을 바꾸기 위해서는  클라이언트인 OrderServiceImpl의 코드를 변경해야 한다.
  • OCP, DIP를 위반한다!
    - DIP : DiscountPolicy 인터페이스 뿐 만 아니라 구체적은 클래스도 의존하고 있다.
    - OCP : 변경에 닫혀있지 않다. 기능을 확장하기 위해서 클라이언트 코드 변경이 필요하다.
  • 즉, FixDiscountPolicy --> RateDiscountPolicy 변경을 하는 순간 DIP 위반!
  • 역할, 구현 도 구분했고... interface도 썼고...다 한줄 알았는데 ..
  • 근데 구체 클래스 써야하는데 어떻게 해야하냐고...!!!!! 도움!

 

 

2. DIP, OCP위반 문제 해결


  • 원인 : 클라이언트에서 인터페이스와 구체 클래스 함께 의존함
  • 해결 : 인터페이스에만 의존하도록 변경 
    이렇게....?
  • 하지만 이렇게 하면 구체 클래스 사용이 불가능하다.. ㅋㅋㅋㅋㅋ NPE날텐데..
    Null에 .찎으면 NPE난다 ㅋㅋㅋㅋ ex) Null.findById()....
  • 그렇다면 OrderService외부에서 구체 클래스를 생성하고 생성자를 통해 OrderService에 주입을 해줘야 할 것 같다.

 

3. GitHub : 210725, RateDiscountPolicy


 

GitHub - bsh6463/SpringCoreFunction

Contribute to bsh6463/SpringCoreFunction development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글

Appconfig 리팩터링  (0) 2021.07.25
관심사의 분리  (0) 2021.07.25
새로운 할인 정책 개발  (0) 2021.07.25
주문, 할인 도메인 개발 & Test  (0) 2021.07.25
주문, 할인 도메인 설계  (0) 2021.07.25
Comments