Today I Learned

[도메인 주도 설계] 12. 모델과 디자인 패턴의 연결 본문

도메인 주도 설계

[도메인 주도 설계] 12. 모델과 디자인 패턴의 연결

하이라이터 2022. 3. 11. 02:49
728x90

STRATEGY (전략)

  • 여러 프로세스 중 하나를 선택하는 로직 + 여러 프로세스 그 자체로 인해 모델링이 복잡해짐

  • 프로세스에서 변화하는 부분을 별도의 전략 객체로 분리해서 모델에 표현
  • 프로세스의 규칙와 프로세스를 제어하는 행위를 분리
  • STRATEGY 디자인 패턴에 따라 규칙이나 대체 가능한 프로세스를 구현

  • 예제 - 항로 탐색 정책
    • Routing Service에서 가장 빠른 항로나 가장 저렴한 항로 중 하나를 선택하는 조건 로직이 나타난다.
    • 이를 STRATEGY로 분리하면 항로 선택 방법을 명확하게 표현할 수 있다.
    • STRATEGY는 선택 가능한 Leg Magnitude Policy의 종류를 명확하게 표현하며, 조건식을 사용하지 않고도 동일한 방법으로 모든 요청을 처리할 수 있다.

COMPOSITE (복합체)

  • 중첩된 복합 객체 간의 관련성을 모델에 반영하지 않을 경우 공통적인 행위가 중복되며, 유연성이 떨어짐

  • COMPOSITE 내부에 포함된 모든 구성요소를 포괄하는 추상 타입을 정의
  • 컨테이너에 포함된 항목의 집계 정보를 반환할 수 있게 정보를 제공하는 메서드를 컨테이너에 구현
  • Leaf 노드는 자신의 값을 기반으로 정보를 제공하는 메서드를 구현

  • 예제 - 여러 항로로 구성된 배송 항로
    • 화물을 수송하는 전체 항로는 복잡하다.
    • 개발팀은 객체 모델을 만들어서 임의 개수의 구간으로 구성된 항로를 표현했다.
    • 개발자들은 항로를 임의의, 획일화된 구간의 연속이라고 생각했다.
    • 도메인 전문가들은 항로를 논리적인 구획의 연속으로 보고있었다. 또한 대체 항로(subroute) 등 복잡한 로직이 존재했다.
    • 새로 알게 된 차이점을 반영하면서 객체 모델이 점점 복잡해졌다.
    • COMPOSITE를 적용하면, 하나의 항로는 다른 항로의 조합으로 구성되므로 서로 다른 수준의 항로를 동일하게 다루기에 적절하다.
    • 양 지점을 이어 결합한 갖가지 항로의 조합을 이용하면 상세 수준의 항로를 구현할 수 있다.

 

 

728x90
Comments