🍀 [ 김영한 스프링 핵심 원리 - 기본편 ] Section03. 스프링 핵심 원리 이해1 - 예제 만들기
2025. 1. 16. 23:24ㆍ개발/🍃 Spring
[ 예제 설명 ]
회원
- 회원 가입, 조회
- 등급 : VIP, BASIC
- 자체 DB 구축 가능, 외부 시스템과 연동 가능
주문과 할인 정책
- 상품 주문
- 할인 정책 : 고정 금액(1000원) 할인 / 할인율 적용
- 할인 정책은 변경 가능성 높음
[ 구조 ]
회원 도메인 협력 관계, 회원 클래스 다이어그램, 회원 객체 다이어그램
비즈니스 요구 사항들을 분석하면서 도메인별로 필요한 역할들을 정리하고
다이어그램들을 통해서 도메인과 클래스 구조를 확립했다
[ 코드 ]
다형성 살려서 개발
MemberService -> MemberServiceImpl
OrderService -> OrderServiceImpl
DiscountPolicy -> FixDiscountPolicy, RateDiscountPolicy
: 역할과 구현을 분리
: 구현 방식에 변화가 생겼을 때 구현체만 갈아끼우면 됨
문제점
DiscountPolicy discountPolicy = new FixDiscountPolicy();
1 ) OCP 파괴
: 결국은 클라이언트 코드에서 할인 정책 구현체(FixDiscountPolicy)를 직접 사용하고 있기 때문에
수정이 발생했을 때(PercentDiscountPolicy 적용하고자 할 때) 클라이언트 코드를 직접 수정해야 한다
즉, "수정에 폐쇄적이어야 한다"는 OCP 원칙을 지키지 못한 것이다
2 ) DIP 파괴
: 구현체가 아닌 인터페이스를 생성해야 하나, 위 코드에서 볼 수 있듯이 구현체인 FixDiscountPolicy를 생성하고 있다
'개발 > 🍃 Spring' 카테고리의 다른 글
[ Spring ] 스프링5 프로그래밍 입문 - chapter3. DI (의존성 주입) (0) | 2025.03.21 |
---|---|
🍀 [ 김영한 스프링 핵심 원리 - 기본편 ] Section04. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 (0) | 2025.01.16 |
🍀 [ 김영한 스프링 핵심 원리 - 기본편 ] Section02. 객체 지향 설계와 스프링 (0) | 2025.01.02 |