더북(TheBook)

타입을 살펴보면 User, ListName, ToDoList는 도메인 모델의 일부이며 HtmlPage, Request, Response는 구현의 기술적 세부 사항이다. 확실하지 않은 경우 비기술자에게 비즈니스를 설명할 때 어떤 이름이 나올 수 있는지 확인하는 것이 둘을 구분하는 방법이다.

입력과 출력에 모두 도메인 타입이 있는 함수는 도메인의 일부이다. 이 예제에는 이런 함수가 딱 하나 있다. 나머지는 허브와 외부 세계를 연결하는 스포크에 속한다.

따라서 허브 내부에 fetchListContent 함수에 해당하는 함수를 생성한다. 이제 허브를 어떻게 사용할지 알아보기 위한 테스트를 작성해보자.

@Test
fun `get list by user and name`() {
    val hub = ZettaiHub(listMap)
    val myList = hub.getList(user, list.listName)
    expectThat(myList).isEqualTo(list)
}

계속해서 ZettaiHub 인터페이스를 정의해보자. 허브 내부에서 외부로 가는 함수는 ToDoList를 읽는 함수 하나만 필요하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.