Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JDBC
- 자바
- 스프링 핵심 기능
- db
- Thymeleaf
- SpringBoot
- 그리디
- Exception
- pointcut
- transaction
- AOP
- 백준
- 스프링
- Android
- 스프링 핵심 원리
- Greedy
- Servlet
- QueryDSL
- JPQL
- 알고리즘
- jpa
- springdatajpa
- http
- Proxy
- java
- kotlin
- 인프런
- spring
- Spring Boot
- 김영한
Archives
- Today
- Total
개발자되기 프로젝트
정책을 변경해보자. 본문
이전에 할인 정책을 바꾸려다보니 DIP, OCP위반이 발생하여 AppConfig를 도입하여 관심대상을 분리하였다.
1. 사용, 구성의 분리
- 할인 정책은 변경하기 위해서는 구성 영역의 코드만 변경해 주면 된다.
- 변경 전
- 변경 후
2. AppConfig 수정
public class AppConfig {
public MemberService memberService(){
return new MemberServiceImpl(memberRepository());
}
public OrderService orderService(){
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
private MemoryMemberRepository memberRepository() {
return new MemoryMemberRepository();
}
private RateDiscountPolicy discountPolicy() {
return new RateDiscountPolicy();
}
}
3. Test
4. 정리
- 정책(구현체)를 변경해도 사용 영역의 코드는 변경이 필요 없다.
- 구성영역의 코드만 변경이 필요하다.
- AppConfig는 일종의 전체 기획자이다.
- 확장을 해도 사용 영역의 변경이 필요 없다.
- 즉, OCP, DIP를 모두 만족하게 되었다.
5. GitHub : 210725, change implementation
'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글
스프링으로 전환~~! (0) | 2021.07.25 |
---|---|
IoC, DI, Container (0) | 2021.07.25 |
Appconfig 리팩터링 (0) | 2021.07.25 |
관심사의 분리 (0) | 2021.07.25 |
정책 변경, DIP & OCP 위반 (0) | 2021.07.25 |
Comments