Деякі думки про Model-Driven Design

Одним з найважливіших понять DDD, є проектування по моделі. Основний підхід полягає в дистиляції знань предметної області в модель, через постійні ітерації (закручено получилося).
Якщо просто - відсікай все непотрібне.

На чому концентруватися:

  1. Концептуальні контури (Conceptual contours). Завдяки ним можна судити, проектувати організацію модулів або класів. Для модуля має виконуватися правило сильної внутрішньої звязаності, і слабкої зовнішньої залежності.
  2. Ізольовані класи  Ерік Еванс радить, постійно переглядати зв’язки між класами та інтерфейсами, в сторону зменшення кількості зв’язків (важливо не перестаратися!). Ідея полягає в тому, що велика кількість зв’язків ускладнює аналіз коду та передбачення сторонніх наслідків.
  3. Замкнутість операцій. Стосується методів класів та Об’єктів-значень. Суть полягає в тому, що метод який отримує як аргумент об’єкт певного типу повинен вертати об’єкт того самого типу (повна замкнутість) або об’єкт, що реалізує однаковий інтерфейс (не повна замкнутість)


// some class method
public Paint mixPaints (Paint p) {
      // some logic here which creates and operates
      // with new Data-Object of type Paint, let's say pp
      return pp;
}

Розбивайте елемеити архітектури (операції, інтерфейси, класи і агрегати) на пов’язані частини, враховуючи ваше власне інтуїтивне розуміння смилових меж предметної області. Спостерігайте за напрямком змін і осями стабільності в ході послідовного рефакторингу, шукайте концептуальні контури, по яким відбувається розмежування між ними. (Ерік Еванс)  

Comments

Popular posts from this blog

Install Kubeflow locally

RabbitMQ and OpenShift