22장에서 다룬 클린 아키텍처는 험블 객체 구현체들로 가득 차 있다.
험블 객체 패턴
험블 객체 패턴은 디자인 패턴으로 테스트하기 어려운 행위와 테스트하기 쉬운 행위를 단위 테스트 작성자가 분리하기 쉽게 하는 방법으로 고안되었다.
행위들을 테스트하기 쉬운 것은 남기고 테스트하기 어려운 것들을 모두 험블 객체로 옮긴다.
GUI의 경우 각 요소가 필요한 위치에 위치하는 것은 테스트하기 어렵기 때문에 이를 Humble object 로 옮기고 쉽게 테스트할 수 있는 것만 뷰에 남기면 Humble object 는 뷰, 나머지는 프레젠터가 된다.
프레젠터와 뷰
뷰는 험블 객체이고 테스트하기 어렵다. 이 객체에 포함된 코드는 가능한 간단하게 유지한다. 뷰는 데이터를 GUI로 이동시키고 데이터를 직접 처리하지는 않는다.
프레젠터는 테스트하기 쉬운 객체로 애플리케이션으로부터 데이터를 받아 화면에 표현할 수 있는 포맷으로 만드는 것이 주 역할이다.
테스트와 아키텍처
테스트 용이성은 좋은 아키텍처가 지녀야 할 속성으로 험블 객체 패턴이 좋은 예가 된다. 테스트하기 쉬운 부분과 어려운 부분으로 분리하면 아키텍처 경계가 정의 된다.