CH10 아키텍처 경계 강제하기
Last updated
Last updated
헥사고날 아키텍처에서는 의존의 방향이 바깥에서 안으로만 향해야 한다. 위 그림에서 보면 점선인 것들이 있는데 잘못된 참조이다. 이 챕터에서는 이러한 잘못된 참조를 근본적으로 불가능하게 하도록 강제하는 방법에 대해서 알아보았다.
자바에서 접근 제한자가 보통 public, protected, private 이 있다고 알고 있지만 defualt 로 package-private 이 존재한다.(나도 이번에 처음 알았다) 이건 따로 명시적으로 선언도 못하고 디폴트로만 사용할 수 있는 것 같다.(찾아보니)
아무튼 package-private 의 효용은 '패키지를 모듈로' 만들어 주기 때문이다. 이렇게 하면 패키지 내에서는 열려있지만 패키지 밖에서는 닫혀있기 때문에 노출해야 한다고 해서 public 으로 노출 했다가 잘못된 참조를 허용하게 되는 것을 미연에 방지할 수 있다. (정확히는 책의 표현대로 '위험성이 줄어든다')
이게 실무에서 클래스 수가 아주 많아지고 참조 관계가 복잡해지면 패키지내 클래스간의 참조만으로 해결이 안될거라서 아마 적용은 어려울 것 같은데 일단 다음 프로젝트에서 package-private 을 적극적으로 사용해서 패키지 레벨에서의 은닉화를 활용해봐야겠다.