- 회원 도메인 요구사항
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)
회원 클래스 다이어그램 : 정적
회원 객체 다이어그램 : 동적
하지만 이렇게 구현했을시에 문제점들이 있다.
//MemberServiceImpl은 MemberRepository에도 의존하고 MemoryMemberRepository에도 의존함
public class MemberServiceImpl implements MemberService{
//이부분에서 DIP 위반, 실제 할당하는 부분이 구현체를 의존함
private final MemberRepository memberRepository = new MemoryMemberRepository();
@Override
public void join(Member member) {
memberRepository.save(member);
}
@Override
public Member findMember(Long memberId) {
return memberRepository.findById(memberId);
}
}
ㄴ 이코드를 보면 구현체인 MemberServiceImpl이 DIP를 위반함. 추상화에도 의존하고, 구체화에도 의존을 하는꼴..!
일단 주문과 할인 도메인 설계 후 이 부분에 대해서 수정해보자.
주문과 할인 도메인 설계
주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있
- 다.)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을
- 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정)
- 회원을 메모리가 아닌 실제 DB에서 조회하고, 정률 할인 정책(주문 금액에 따라 % 할인)을 지원해도 주문서비스를 변경하지 않아도 된다.
- 협력 관계를 그대로 재사용 할 수 있다.
'Back End > Spring' 카테고리의 다른 글
Spring - AppConfig (0) | 2023.07.07 |
---|---|
Spring - DIP, OCP를 지키는 도메인 서비스 (0) | 2023.07.07 |
Spring - springboot 초기 설정 (0) | 2023.07.06 |
좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2023.07.05 |
Spring - 객체 지향 프로그래밍이란 (0) | 2023.07.05 |