이런식으로 바뀌면 개방폐쇄의 원칙이 지켜지면서 어떤레파지토리로 변경해도 가능
mock 레포지토리 도 가능
설계를 통해 테스트를 쉽게!
고수준 모듈이 저수준모듈을 의존하지 않게 하는 것?
현재 그림상황보면 고수준 비즈니스 레이어가 persistence 계층을 의존하고 있다
그래서 이런식으로 구조 변경
대표적인 외부 통신인 레스트 클라이언트나 웹클라이언트도 추상화를 해주자
도메인이 계층을 추가하자!
레포지토리가 위로 올라 왔네?
즉 도메인객체는 레포지토리를 사용 못함
도메인 객체가 협력에 필요한 모든객체는 애플리케이션 서비스에 미리 다준비해서 도메인에게 넘겨줘야 함.
이해하기 어려운 구문들 ㅠㅠ
원친적으로 도메인과 도메인서비스는 레포지토리를 알아서 안돼지만
불필요한 쿼리가 나가는 상황이 존재
그래서 접근가능하게해서 따로
DDD에서 정의하는 서비스란
행위자 Manager .. 흠 ( 적당한 이름이 없어서 붙이는데 !?)
객체간의 협력을 좀더 강조하는 느낌의 Service라는 이름이 더 적합한거 같다
즉 서비스는? 매니저이다 !