Factory
Aggregate를 생성하는 일이 복잡하거나 내부구조를 너무 많이 드러내는 경우, Factory로 캡슐화
Factory의 사용 이유
객체 생성이 그 자체로 주요한 연산이 될 수 있지만 복잡한 조립 연산은 생성된 객체의 책임으로는 어울리지 않음
이 책임을 클라이언트에 두면 클라이언트의 설계가 지저분해 지고 조립되는 객체나 Aggregate의 캡슐화가 위반됨
클라이언트와 생성된 객체사이의 구현이 지나치게 결합됨
Factory사용이 위와 같은 장점이 있지만, 복잡하지 않거나 다른 로직이 필요없을 경우 생성자로 대체
우리는 복잡한 소프트웨어 구조를 적절한 패턴으로 덜 복잡하게 만드는게 목표임
간단한 구조를 패턴을 사용할 경우 간단한게 복잡해 보일 수 있음
트레이드 오프를 항상 생각하자
Repository
객체를 재구성, 제거를 담당
객체의 재구성이란?
저장되어있는 객체로부터 인스턴스를 만들어내는 것Aggregate내부에 존재하는 모든 객체는 루트에서부터 탐색을 토대로 접근할것
팩토리는 객체의 생성을, 레포지토리는 객체의 재구성, 제거를 담당
#Aggregate