Деякі думки про Model-Driven Design
Одним з найважливіших понять DDD, є проектування по моделі. Основний підхід полягає в дистиляції знань предметної області в модель, через постійні ітерації (закручено получилося).
Якщо просто - відсікай все непотрібне.
На чому концентруватися:
Якщо просто - відсікай все непотрібне.
На чому концентруватися:
- Концептуальні контури (Conceptual contours). Завдяки ним можна судити, проектувати організацію модулів або класів. Для модуля має виконуватися правило сильної внутрішньої звязаності, і слабкої зовнішньої залежності.
- Ізольовані класи Ерік Еванс радить, постійно переглядати зв’язки між класами та інтерфейсами, в сторону зменшення кількості зв’язків (важливо не перестаратися!). Ідея полягає в тому, що велика кількість зв’язків ускладнює аналіз коду та передбачення сторонніх наслідків.
- Замкнутість операцій. Стосується методів класів та Об’єктів-значень. Суть полягає в тому, що метод який отримує як аргумент об’єкт певного типу повинен вертати об’єкт того самого типу (повна замкнутість) або об’єкт, що реалізує однаковий інтерфейс (не повна замкнутість)
// 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
Post a Comment