我正在为我们的一个部门编写一个数据验证实用程序,它有以下要求。
- 动态添加新的业务实体
- 动态地向实体添加新的验证。
- 用于显示业务实体列表及其验证的 UI
- 用户可以选择开始对所有或选定的业务实体进行验证。
- 如果任何验证失败,UI 将显示验证错误消息。
- 即使任何验证失败,系统也应继续进行下一个验证,因此所有配置的验证都会得到验证。
在搜索互联网后,我发现以下两种有前景的设计模式可以满足我的业务需求,一种是装饰器模式,另一种是命令链(又名责任链)。现在我的问题是哪个更好?有人有更好的主意吗?
Thanks
我想你想要的是规格型号 http://en.wikipedia.org/wiki/Specification_pattern。所以你会做这样的事情:
public void StartDateNotInPastSpecification : ISpecification<ISomeBusinessObject>
{
public bool IsSatisfiedBy(ISomeBusinessObject myBusinessObject)
{
return myBusinessObject.StartDate >= DateTime.Now;
}
}
这种模式的好处是,每个规则都可以轻松地单独测试,并且您可以选择何时应用验证规则(而不是某些框架将这个决定强加给您)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)