目前潛入DDD,我讀過埃裏克埃文斯的大部分藍皮書。到目前爲止非常有趣:)DDD - 無效期滿
我一直在建模一些聚合物,他們持有過期實體的集合。我拿出那個表達的一般方法:
public class Expirable<T>
{
public T Value { get; protected set; }
public DateTime ValidTill { get; protected set; }
public Expirable(T value, DateTime validTill)
{
Value = value;
ValidTill = validTill;
}
}
我很好奇,最好的辦法是無效的可到期(廢止或一組工作時,忽略它)是什麼。到目前爲止,我一直在考慮在Repository構造函數中這樣做,因爲這是您從中訪問聚合並充當「集合」的地方。
我很好奇,如果有人提出瞭解決方案來解決這個問題,我會很高興聽到它:)其他方法也非常歡迎。
UPDATE 2013年10月1日:
這是不與來自Greg Young的所述CQRS/ES方法DDD。但是,從我剛開始閱讀這本書和第一個應用程序開始,Evans就已經採用了這種方法。像格雷格楊說的,如果你必須做好桌子,你必須先做幾個;)
好的模式的確如此,但是你有沒有一個例子說明'T'通常會在「過期不變」場景中出現?你會在哪裏放置強制執行不變的代碼? – guillaume31
查看我的評論下面的例子要點。 –
你的例子只使用'UserSession'作爲'T'。 'UserSession'不是DDD意義上的一個不變量 - 一個由Aggregate Root執行的業務規則。既然你提到了不變式,我只是好奇地想知道你是如何用'Expirable'來實現它們的。 –
guillaume31