我有一個關於通過規範模式強制執行業務規則的問題。考慮以下示例:規範模式實施幫助
public class Parent
{
private ICollection<Child> children;
public ReadOnlyCollection Children { get; }
public void AddChild(Child child)
{
child.Parent = this;
children.Add(child);
}
}
public class Child
{
internal Parent Parent
{
get;
set;
}
public DateTime ValidFrom;
public DateTime ValidTo;
public Child()
{
}
}
業務規則應該強制在有效期與另一個有效期相交的集合中不能有子項。
對於我想實現是被用來拋出一個異常,如果無效添加子和,以及可以用來檢查是否該規則將之前添加的孩子被侵犯的規範。
像:
public class ChildValiditySpecification
{
bool IsSatisfiedBy(Child child)
{
return child.Parent.Children.Where(<validityIntersectsCondition here>).Count > 0;
}
}
但在這個例子中,孩子上網家長。對我來說,這看起來並不錯。當孩子尚未被添加到父母時,該父母可能不存在。你將如何實現它?
這可能是一種可能性。但我只是想知道我是否以正確的方式使用這種模式......當沒有父母時,有效性不是唯一的嗎? – Chris 2010-01-28 21:39:49