2012-02-16 9 views
5

ドメイン駆動型設計を手伝って、ドメインモデル内の集約ルートを特定する方法に関する状況に遭遇しました。ドメインモデルの集約ルーツを特定するにはどうすればよいですか?

私はシンプルなto-doリストをモデル化し、次の三つのクラス、持っている:

  1. UpdateはAのみのコンテキスト内に存在する:私はモデルについては、以下を述べることができる

    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; } 
    } 
    

    を仕事。

  2. タスクは、リストのコンテキスト内にのみ存在します。

リストは、唯一の集約ルートのようです。 (実際、私のデータアクセス層では、Listオブジェクトの読み込み/保存のみが許可されています。)しかし、現在Taskクラスに存在するUIをListクラスにきれいにプッシュする方法はわかりません。現時点では、ListクラスはTaskオブジェクトへの参照を渡しており、呼び出し側がそれらを変更することができます。

これは、タスクが含まれているリストに依存している場合でも、タスクは集約ルートであることを意味しますか?

ありがとうございます。

+1

関連する質問:[DDD:集約ルートの特定](http://programmers.stackexchange.com/questions/150196/)。 –

答えて

5

Vaughn Vernonさんは、あなたの問題を明らかにする集約設計について3 part articleを持っています。

+0

便利なリンクありがとうございます。 – rob

関連する問題