프로젝트는 시간이 지나면서 계층 간의 경계가 약화되고, 코드는 점점 더 테스트하기 어려워지고, 새로운 기능을 구현하는 데 점점 더 많은 시간이 든다.
아키텍처 내의 경계를 강제하는 방법과 아키텍처 붕괴에 취할 수 있는 몇 가지 조치를 알아보자.
경계와 의존성
- 아키텍처의 어디에 경계가 있는가 ?
- 각 계층 사이, 안쪽 인접 계층과 바깥쪽 인접 계층 사이에 있다.
- 경계를 강제한다는 것은 어떤 의미인가 ?
- 의존성이 올바른 방향을 향하도록 강제하는 것을 의미한다.
- 이번 장에서는 의존성 규칙을 강제하는 방법들을 알아보고, 잘못된 방향을 가리키는 의존성을 없게 만들고자 한다.
접근 제한자
- 접근 제한자는 경계를 강제하기 위한 자바에서 제공하는 기본적인 도구이다.
- public, protected, private, package-private(default)
✔️ package-private
- 자바 패키지를 통해 클래스들을 응집적인 ‘모듈’로 만들어 준다.
- 모듈 내에 있는 클래스들은 서로 접근 가능하지만, 패키지 바깥에서는 접근할 수 없다.
- 모듈의 진입점으로 활용될 클래스들만 골라서 public으로 만들면 의존성이 잘못된 방향을 가리켜서 의존성 규칙을 위반할 위험이 줄어든다.