2012-02-16 2 views
5

Погрузившись с управляемым доменом дизайном, я столкнулся с ситуацией относительно того, как идентифицировать совокупные корни в моей модели домена.Как определить совокупные корни в модели домена?

У меня есть следующие три класса, моделирования простой список дел:

public class List { 
    private IList<Task> _tasks; 

    public List() { ... } 
    public string Name { get; set; } } 
    public IEnumerable<Task> Tasks() { ... } 
    public void AddTask(string descr) { ... } 
    public void RemoveTask(Task t) { ... } 
    public Task GetRandomTask() { ... } 
} 

public class Task { 
    private IList<Update> _updates; 

    public Task(string descr) { ... } 

    public string Description { get; } 
    public bool IsClosed { get; } 
    public IEnumerable<Update> Updates() { ... } 
    public void AddUpdate(string descr, bool close) { ... } 
} 

public class Update { 
    public Update(string descr) { ... } 
    public string Description { get; } 
} 

я могу заявить следующее о модели:

  1. Обновленная информация существует только в контексте Задача.
  2. Задача существует только в контексте списка.

Таким образом, список будет представлять собой единственный совокупный корень. (Действительно, мой уровень доступа к данным будет разрешать загрузку/сохранение объектов списка.) Однако я не могу понять, как я могу явно нажимать пользовательский интерфейс, который в настоящее время существует в моем классе Task, в класс List. На данный момент мой класс List передает ссылки на объекты Task, позволяя вызывающему изменять их.

Означает ли это, что задача также является совокупным корнем, даже если ее существование зависит от содержащего список?

Заранее спасибо.

+1

Связанный вопрос: [DDD: Идентификация совокупного корня] (http://programmers.stackexchange.com/questions/150196/). –

ответ

5

Vaughn Vernon имеет 3 part article об общей конструкции, которая может пролить свет на вашу проблему.

+0

Благодарим вас за полезную ссылку. – rob

Смежные вопросы