Влад Хононов
Что такое предметно-ориентированное проектирование?
(What is Domain-Driven Design?)
Рисунок 5-1. Извлечение-преобразование-загрузка потока данных
DB.StartTransaction();
var job = DB.LoadNextJob();
var json = LoadFile(source);
var xml = ConvertJsonToXml(json);
WriteFile(destination, xml.ToString();
DB.MarkJobAsCompleted(job);
DB.Commit()
Рисунок 5-2. Более сложная модель данных
public class CreateUser {
public void Execute(userDetails) {
try {
DB.StartTransaction();
var user = new User();
user.Name = userDetails.Name;
user.Email = userDetails.Email;
user.Save();
DB.Commit();
} catch {
DB.Rollback();
throw;
}
}
}
class Color {
int red;
int green;
int blue
}
class Color {
Color mixWith(Color other)
…
return new Color(...);
}
}
class Person {
Guid Id;
String FirstName;
String LastName;
}
Рисунок 5-3. Агрегат как иерархия объектов
Рисунок 5-4. Агрегат как граница согласованности
Рисунок 5-5. Корень агрегата
Рисунок 5-6. Поток публикации событий предметной области
Рисунок 5-7. Модель, основанная на состоянии
Рисунок 5-8. Представление, основанное на событиях
Рисунок 5-9. Агрегат, основанный на событиях