在DDD中,域模型由實體和值對象組成,但是當我們需要模型中的某些內容時,我們該做什麼?域模型:既不是實體也不是價值對象
例如,我已經介紹了以下ScheduledItems<T>
執行情況,以便封裝調度細節:
public class ScheduledItems<T>
{
private SortedDictionary<DateTime, T> scheduledItems;
public ScheduledItems()
{
scheduledItems = new SortedDictionary<DateTime, T>();
}
public void ScheduleItem(DateTime scheduledDate, T item)
{
scheduledItems.Add(scheduledDate, item);
}
public void RemoveItem(T item)
{
scheduledItems
.Where(x => x.Value.Equals(item))
.Select(x => x.Key)
.ToList()
.ForEach(k => scheduledItems.Remove(k));
}
}
本課程將通過對調度的目的,一對夫婦實體使用。
在這一點上,這既不是一個實體(它沒有身份),也不是一個價值對象(它不是不可變的)。
一個解決方案是通過使其成爲不可變的('添加'或'刪除'項目將返回ScheduledItems的新實例)將它變成一個Value Object。
但是,這是真的有必要的東西是不是真的與域相關?這個類可以像其他任何.NET集合一樣。
當調度不屬於您的域時,將其作爲基礎設施方面(如日誌記錄或安全性)處理。 – Jehof 2014-11-06 06:54:05
@Jehof:這完全不是基礎設施問題。它純粹是由域實體使用的'SortedDictionary'包裝器。 – davenewza 2014-11-06 11:33:06