[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 비즈니스 요구사항과 설계 & 회원 도메인 설계 / 인프런 김영한 스프링 핵심 원리 기본편
이번 시간에는 비즈니스 요구사항에 관련해서 프로젝트를 설계하는 시간이었다.
우선 회원, 주문, 할인 정책 이렇게 3가지의 요구 사항이 있다.
기획자가 개발자에게 요구 사항을 설명한다고 가정하자.
회원쪽에서 3번에 대한 추가 설명은, 자체 DB를 가지고 회원 시스템을 구축하거나,
이 기능을 외주를 주거나 회사 외부 시스템에서 만들어둔 회원 시스템을 활용할 수도 있고,
아직 미정 상태인 것이다.
(-> 인터페이스 활용해서 역할과 구현을 구분하면, 추후 정해졌을 때 해결 가능!)
주문과 할인 정책에서도 마찬가지로 인터페이스를 활용해서,
나중에 확정되면 그때 처리 가능하다!
위의 예시에서 보듯이, 할인 정책과 같은 부분은 지금 결정하기에 신중한 부분이다.
하지만, 개발 일정은 정해져 있기 때문에, 미확정 부분들이 결정될 때까지 개발을 늦출수는 없다.
이럴때 객체 지향 설계 방법을 활용할 수 있다.
인터페이스를 만들고 구현체는 언제든지 갈아끼울 수 있도록 설계하면 된다!
다음 강의로 이어져서 회원 도메인 설계를 시작했다.
아직 DB가 정해지지 않은 상황이기 때문에, 회원 저장소(Repository)를 생성하고
구현체로 메모리에 저장하는 저장소, DB 회원 저장소, 외부 시스템 연동 회원 저장소.
이렇게 셋으로 구분하여서 구현체를 생성할 예정!
회원 클래스에서는,
MemberService라는 인터페이스를 만들고, 그거에 대한 구현체로
MemberServiceImpl (Implement는 구현하다 라는 뜻) 를 생성할 것이다~~
그리고 그 MemberServiceImpl은 인터페이스인 MemberRepository를 바라보고,
구현체로 앞서 언급한 메모리, DB 리포지토리를 구현할 것이다!
결국 크게 보면, 객체간의 실제 참조 값은 클라이언트 -> 회원 서비스 Impl -> Memory 회원 저장소
이렇게 참조 관계라고 볼 수 있다~~!