[DDD] 모델과 디자인 패턴의 연결

skayjays·2021년 11월 2일
2

DDD

목록 보기
3/16
post-thumbnail

디자인 패턴이란?

  • 클래스로 코딩되는 연결 리스트와 해시 테이블에 관한 설계를 패턴화한 것이 아니다.
  • 시스템을 지원하는 복잡한 설계에 대한 패턴도 아니다.
  • 특정한 상황에서 일반적인 설계 문제를 해결하고자 상호 교류하는 수정 가능한 객체와 클래스에 관한 설명한 것이다.

도메인 주도 설계에서의 바라볼 디자인패턴

  • 코드 내에 포함된 기술적인 측면을 다루는 디자인패턴
  • 모델 내에 포함된 개념패턴

Composit 패턴과 Strategy 패턴은 고전적인 디자인 패턴을 다른 방식으로 생각함으로써
도메인 문제에 어떻게 적용 할수 있는지를 보여준다.

STRATEGY

  • 프로세서에서 변화하는 부분을 별도의 Strategy 객체로 분리해서 모델에 표현하라.
  • 프로세스의 규칙과 프로세스를 제어하는 행위를 서로 분리하라.
  • Stragegy 디자인 패턴에 따라 규칙이나 대체 가능한 프로세스를 구현하라.
  • 다양한 방식으로 변경된 Strategy 객체는 프로세스의 서로 다른 처리방식을 표현한다.

디자인패턴

  • 각기 다른 알고리즘 간에 상호 대체할 수 있는 능력에 중점을 둔다.

도메인패턴

  • 프로세스 또는 정책적인 규칙과 같은 하나의 개념을 표현하는 능력에 중점을 둔다.

COMPOSITE

  • 부분과 전체의 계층을 표현하기 위해 복합 객체를 트리 구조로 만든다.
  • 클라이언트가 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있다.
  • Composite 내부에 포함된 모든 구성요소를 포괄하는 추상 타입을 정의하라.
  • 컨테이너에 포함된 항목의 집계 정보를 반환할 수 있게 정보를 제공하는 메서드를 컨테이너에 구현하라.
  • 단말 노드의 경우 자신의 값을 기반으로 정보를 제공하는 메서드를 구현하라.
  • 클라이언트는 추상 타입만을 사용하므로 컨테이너와 단말 노드를 구분하지 않아도 된다.

정리

  • 디자인패턴을 개념을 표현하는 도메인에 적용 가능한점이 새로웠다. 또한 모든 디자인 패턴이 도메인 패턴으로 분류되지 않는다는점도 기억해야겠다.
    앞으로 소프트웨어를 만들고 설계할때 Strategy, Composite를 활용해서 도메인 표현을 더 유연하고 확장가능하게 할 수 있게 하자.
profile
기초를 탄탄하게

1개의 댓글

comment-user-thumbnail
2021년 11월 3일

매일매일 학습 화이팅!

답글 달기