작성
·
219
0
안녕하십니까 선생님
스프링 핵심 원리 이해2 - 객체 지향 원리 적용에서 관심사의 분리 강의를 듣고 나서 복습하고 제가 이해한 내용이 맞는지 판단하고 싶어 여쭤봅니다.
해당 강의 내용은 MemberServiceImpl, OrderServiceImpl이 인터페이스와 구현체 모두 의존하다가, 인터페이스로만 의존하게 되는 과정입니다.
MemberServiceImpl은 클라이언트이다. 그 전 코드들은 클라이언트가 직접 어느 Repository를 쓰는지 직접 결정해야한다. 그렇다면 클라이언트는 repo도 정해야하고, 회원가입도 해야한다. SRP가 위배된다.
그리고, 코드를 보면 MemberRepoistory memberRepostiory = new MemoryMemberRepostiory() 에서 인터페이스에도 의존하고, 구현체에도 의존하게 된다. DIP가 위배된다.
그래서 전체를 포괄? 관리?하는 AppConfig를 만들어서 구현체를 만들어 회원 서비스 클라이언트에게 어떤 저장소를 사용할지 정해준다.
OrderServiceImpl도 클라이언트로 위와 마찬가지로 AppConfig를 이용하여 구현체를 만들어 주문 서비스를 요청하는 클라이언트에게 어떤 할인정책, 어떤 저장소를 사용할지 정해준다.
감사합니다!