我有一个关于通过规范模式强制执行业务规则的问题。考虑以下示例:规范模式实施帮助
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