본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] AppConfig 리팩터링 & 새로운 구조와 할인 정책 적용 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 3. 5.
728x90
반응형

이번 시간에는 지난 시간에 구현했던 AppConfig를 리팩터링하였다.

 

현재 AppConfig 클래스의 문제점을 보면, MemoryMemberRepository를 중복으로 호출하고 있고,

또한, 구성정보에는 역할에 따른 구현이 한 그림에 잘 보여야 하는데, 기존 코드는 그렇지 않다는 단점이 있다.

 

위의 그림에서 보이는 것처럼 지정을 하고, Ctrl + Alt + M를 눌러서 Extract Method를 실행해준다.

 

리턴 타입은 인터페이스를 지정해주었다.

이렇게 수정을 해주면 역할과 구현 클래스가 한눈에 파악이 되기 때문에, 애플리케이션의 전체 구성이 어떻게 되어있는지 파악이 용이하다.

그리고 코드에서 볼 수 있듯이, 메소드 명을 통해서 역할을 파악할 수 있게 된다.

 

또한, 기존의 코드에 중복이 있었던 MemoryMemberRepository가 제거되었다.

그렇게 되면, 나중에 구현체가 변경이 있을 때 MemoryMemberRepository 부분만 수정을 해주면 된다.

이어서 다음 강의에는, 할인 정책을 변경해서 적용하는 시간을 가졌다.

기존에 적용했던 고정 할인 정책에서, 비율에 따른 할인으로 변경할 것이다.

 

FixDiscountPolicy에서 RateDiscountPolicy로 변경하기 위해서는 어디를 수정해야 할까?

정답은 애플리케이션의 구성을 담당하는 AppConfig만 수정해주면 된다.

이렇게 사용영역의 구성은 전혀 변경할 필요없이 구성 영역만 수정하면 된다.

 

AppConfig에서 해당 부분을 찾아서

RateDiscountPolicy로 구현체만 수정해주면 된다~~!

 

테스트도 정상 작동하는 것을 확인할 수 있다.

반응형

할인 정책이 반영되었는지 확인하기 위해서, OrderApp 클래스에서 ItemPrice를 수정하고 직접 메소드를 실행해본다.

 

ItemPrice가 10,000이였을 때 1,000원이 할인이 적용되었고,

ItemPrice가 20,000이였을 때 2,000원이 할인이 적용되었으므로, 비율에 따라서 정상 작동하는것을 확인할 수 있다.

 

이렇게 AppConfig는 공연에서 공연의 기획자 역할을 한다.

공연 기획자는 공연에 필요한 역할과, 그 역할을 맡는 배우들을 모두 알아야 한다.

이처럼 AppConfig는 인터페이스와 구현체를 모두 알고 있다.

 

이렇게 AppConfig를 활용해서 사용 영역과 구성 영역을 구분했다.

정책 변경이 생기더라도 사용 영역을 건드리지 않고도,

구성 영역에서 구현체만 변경을 통해서 유지 보수가 가능하게 되었다!

728x90
반응형

'개발자 공부 - 인프런 온라인 강의 > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글

[섹션 4. 스프링 컨테이너와 스프링 빈] 스프링 컨테이너 생성 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.16
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 스프링으로 전환하기 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.13
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] IoC, DI, 그리고 컨테이너 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.12
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 좋은 객체 지향 설계의 5가지 원칙의 적용 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.05
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 관심사의 분리 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.03.05
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 새로운 할인 정책 적용과 문제점 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.28
[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 새로운 할인 정책 개발 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.16
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 주문과 할인 도메인 실행과 테스트 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.16

댓글