ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 23장 - 프레젠터와 험블 객체
    클린 코드(Clean Code)/클린 아키텍처요약 2023. 1. 15. 00:01
    728x90

    험블 객체 패턴

    프레젠터는 험블 객체 패턴을 따른 형태로 아키텍처 경계를 식별하고 보호하는 데 도움이 됩니다.

     

    험블 객체 패턴은 디자인 패턴으로, 테스트하기 어려운 행위와 테스트하기 쉬운 행위를 단위 테스트 작성자가 분리하기 쉽게 하는 방법으로 고안되었습니다.

     

    테스트하기 어려운 행위를 모두 험블 객체로 옮기는 간단한 패턴입니다.

     

    프레젠터와 뷰

    뷰는 험블 객체이며 테스트하기 어렵습니다.

    프레젠터는 테스트하기 쉬운 객체로 애플리케이션으로부터 데이터를 받아 화면에 표현할 수 있는 포맷으로 만들어냅니다.

     

    테스트 코드를 어느 정도 작성해 보았다면 위의 개념에 대해서는 쉽게 이해할 수 있습니다.

     

    데이터베이스 게이트웨이

    유스케이스 인터랙터와 데이터베이스 사이에는 데이터베이스 게이트웨이가 위치합니다.

     

    유스케이스 계층은 SQL을 허용하지 않아야 합니다.

    구현체에서 직접 SQL을 사용하거나 데이터베이스에 접근하여 필요한 데이터를 가져와야 합니다.

    여기서 데이터베이스 계층을 구현하는 구현체는 험블 객체입니다.

    반면 인터랙터는 게이트웨이를 스텁이나 테스트 더블로 교체할 수 있기 때문에 험블 객체가 아닙니다.

     

     

    데이터 매퍼

    ORM도 데이터베이스 계층입니다.

    게이트웨이 인터페이스와 데이터베이스 사이에서 일종의 또 다른 험블 객체 경계를 형성합니다.

     

    서비스 리스너

    애플리케이션이 다른 서비스와 통신하기 위해 서비스 경계를 생성하는 험블 객체 패턴을 발견할 수 있을까요?

    해당 모듈은 데이터를 적절한 포맷으로 만들어 외부 서비스로 전송합니다.

    반대로 외부로부터 데이터를 수신하는 서비스 리스너는 서비스 인터페이스로부터 데이터를 수신하고, 데이터를 애플리케이션에서 사용할 수 있도록 간단한 데이터 구조로 포맷을 변경합니다.

     

    결론

    각 아키텍처 경계마다 가까이 숨어 있는 험블 객체 패턴을 발견할 수 있습니다.

    이를 통해 전체 시스템의 테스트 용이성을 크게 높일 수 있습니다.

     

    '클린 코드(Clean Code) > 클린 아키텍처요약' 카테고리의 다른 글

    25장 - 계층과 경계  (0) 2023.01.19
    24장 - 부분적 경계  (0) 2023.01.18
    22장 - 클린 아키텍처  (0) 2023.01.14
    21장 - 소리치는 아키텍처  (0) 2023.01.13
    20장 - 업무 규칙  (0) 2023.01.12

    댓글

Designed by Tistory.