인프런 김영한 강사님의 <스프링 핵심 원리-기본편> 강의를 정리한 글입니다.
스프링을 사용하지 않는 프로그램을 구현해보자.
설계 방향만 제시하고 코드는 생략한다.

역할과 구현으로 분리하여 보자
(역할) MemberService -> (구현 객체) MemberServiceImpl
(역할) MemberReposiroty -> (구현 객체) MemoryMemberRepository, DbMeberRepository


이때 회원 서비스는 MeberServiceImpl이다.
도메인 협력 관계: 기획자들이 보는 설계도
클래스 다이어그램: 개발자들이 보는 설계도
객체 다이어그램: 실행 중에 시스템 상황


역할과 구현을 분리하여 설계하였더니,
회원 저장소와 할인 정책을 유연하게 변경할 수 있다.



회원 저장소와, 할인 정책이 변경되어도
주문 서비스 구현체는 변경하지 않아도 된다!