본문 바로가기

책터디/클린 아키텍처

03. 코드 구성하기 계층으로 구성하기 soon |-- domain ||-- Account ||-- Activity ||-- AccountService ||-- AccountRepository |-- persistence ||-- AccountRepositoryImpl |-- web ||-- AccountController 이 패키지 구조는 최적의 구조가 아니다. 애플리케이션의 기능 조각이나 특성을 구분 짓는 패키지 경계가 없다. 애플리케이션이 어떤 유스케이스들을 제공하는지 파악할 수 없다. 패키지 구조를 통해서는 우리가 목표로 하는 아키텍처를 파악할 수 없다. 기능으로 구성하기 soon |-- account ||-- Account ||-- AccountController ||-- AccountRepository ||-- A..
02. 의존성 역전하기 단일 책임 원칙 컴포넌트를 변경하는 이유는 오직 하나뿐이여야 한다. '책임' 은 사실 '오로지 한 가지 일만 하는 것' 보다는 '변경할 이유' 로 해석해야 한다. 의존성 역전 원칙 계층형 아키텍처에서 계층 간 의존성은 항상 다음 계층인 아래 방향을 가리킨다. 단일 책임 원칙을 적용할 때 상위 계층들이 하위 계층들에 비해 변경할 이유가 더 많다. 그러므로 영속성 계층에 대한 도메인 계층의 의존성 때문에 영속성 계층을 변경할 때마다 잠재적으로 도메인 계층도 변경해야 한다. 그러나 도메인 코드는 애플리케이션에서 가장 중요한 코드다. 영속성 코드가 바뀐다고 해서 도메인 코드까지 바꾸고 싶지는 않다. 그러면 어떻게 의존성을 제거할 것인가? 의존성 역전 원칙 (Dependency Inversion Principle..