2012-02-16 21 views
5

Dabbling với thiết kế điều khiển miền, tôi đã gặp phải tình huống liên quan đến cách xác định nguồn gốc tổng hợp trong mô hình miền của tôi.Làm cách nào để xác định nguồn gốc tổng hợp trong mô hình miền?

Tôi có ba loại sau đây, mô hình hóa một cách đơn giản để làm danh sách:

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

tôi có thể nêu những điều sau đây về mô hình:

  1. Báo cáo cập nhật chỉ tồn tại trong bối cảnh của một Bài tập.
  2. Tác vụ chỉ tồn tại trong ngữ cảnh của Danh sách.

Danh sách, do đó, dường như là gốc tổng hợp duy nhất. (Thật vậy, lớp truy cập dữ liệu của tôi sẽ chỉ cho phép tải/lưu các đối tượng List.) Tuy nhiên, tôi không thể thấy cách tôi có thể đẩy UI một cách sạch sẽ hiện đang tồn tại trên lớp Task của tôi, vào lớp List. Hiện tại lớp List của tôi đang đưa ra các tham chiếu đến các đối tượng Task, cho phép người gọi sửa đổi chúng.

Điều này có nghĩa là Task cũng là một gốc tổng hợp, ngay cả khi sự tồn tại của nó phụ thuộc vào một List chứa?

Xin cảm ơn trước.

+1

Câu hỏi liên quan: [DDD: Xác định tổng hợp gốc] (http://programmers.stackexchange.com/questions/150196/). –

Trả lời

5

Vaughn Vernon có 3 part article về thiết kế tổng hợp có thể làm sáng tỏ vấn đề của bạn.

+0

cảm ơn bạn đã liên kết hữu ích. – rob