0
我想了解如何在使用面向對象編程時對兩個對象之間的「複雜」關係進行建模。管理對象之間的複雜關係
我可以理解如何管理簡單的關係,例如當對象之間存在1:1或1:M映射時,
1:1的關係
public Car
{
public string Manufacturer { get; set; }
public string Model { get; set; }
public Engine Engine { get; set; } // 1:1 relationship here
}
public Engine
{
public int NumberOfCylinders { get; set; }
public Car Car { get; set; } // 1:1 relationship here
}
1:M關係
public Father
{
public string FullName { get; set; }
public List<Child> Children { get; set; } // 1:M relationship here
}
public Child
{
public string FullName { get; set; }
public Father Father { get; set; } // 1:M relationship here
}
..但問題是,我該如何管理兩個對象之間的關係時,關係更爲複雜?
例如,讓我們舉一個例子,當有任務可以由Joe 或 John完成(即任一人都可以完成任務)。我將如何建模?
public Task
{
public string Description { get; set; }
// what do I put here?
}
public Person
{
public string FullName { get; set; }
// what do I put here?
}
var joe = new Person() { FullName = "Joe" };
var john = new Person() { FullName = "John" };
var task = new Task() { Description = "Task that can be completed by either Joe or John" };
我確定必須有一個可用於模擬這些情況的通用模式,但我一直無法找到解決方案!
呃...一個M:N映射? 「任務」具有「列表 QualifiedPeople」屬性,和/或「Person」具有「列表 AvailableTasks」列表。顯然,你的代碼必須確保修改關係的兩端,以保持同步。 –
millimoose
任務可以由'Joe'和'Jon'完成,或者只有一個人完成? – Chris