다음과 같은 비즈니스 요구사항이 있다고 하자.
<회원>
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(미확정)
<주문과 할인 정책>
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정)
요구사항을 보면 회원데이터, 할인정책 부분은 지금 결정이 어려운 상태다.
그렇다고 해서 정책 결정까지 기다릴 수는 없다.
그렇기 때문에 객체지향설계 방법인 다형성을 사용해야 한다.
구체적으로, 인터페이스를 우선 만들어놓고 구현체를 따로 만들어 갈아끼울 수 있도록 설계하면 된다.
역할과 구현을 분리하는 것이다.
'웹개발 > 스프링' 카테고리의 다른 글
[Inflearn] 회원 도메인 개발 (0) | 2025.01.29 |
---|---|
[Inflearn] 회원 도메인 설계 (0) | 2025.01.29 |
[Inflearn] 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2025.01.26 |
[Inflearn] 좋은 객체 지향 프로그래밍이란? (0) | 2025.01.26 |
[Inflearn] 스프링 (0) | 2025.01.25 |