用于大型验证任务的java是责任链模式的好选择吗?
我需要建立一个流程,根据大约200条验证规则验证记录。记录可以是10种类型中的一种。从验证规则到记录类型有一些分割,但存在很多重叠,这使我无法清晰地将验证规则组合起来
在我的设计过程中,我正在考虑所有验证规则的责任链模式。这是个好主意还是有更好的设计模式
你可以在下面搜索框中键入要查询的问题!
我需要建立一个流程,根据大约200条验证规则验证记录。记录可以是10种类型中的一种。从验证规则到记录类型有一些分割,但存在很多重叠,这使我无法清晰地将验证规则组合起来
在我的设计过程中,我正在考虑所有验证规则的责任链模式。这是个好主意还是有更好的设计模式
# 1 楼答案
责任链意味着验证必须按照一定的顺序进行。我可能会使用一些类似于策略模式的东西,其中有一组应用于特定类型记录的验证策略。然后,您可以使用工厂检查记录并应用正确的验证集
# 2 楼答案
验证通常是一种复合模式。当你分解它时,你想把你想做的和你想做的分开,你得到:
如果foo是有效的 那就做点什么
这里我们有一个抽象的是有效的警告:这段代码是从current中提取的,类似的例子,所以你可能会发现缺少的符号等等。但这就是你了解的情况。此外
对象包含有关故障的消息以及简单状态(true/false)。 这让你可以选择只问“通过了吗?”vs.“如果失败了,告诉我原因”
及
是一种方便的课程,只需分配给一名代表,就可以学习任何课程并快速将其转化为受人尊敬的类型。例如,在本例中,这意味着您的复合验证器已经是一个集合,可以进行迭代
您的问题中有一个次要问题:“干净绑定”如“类型a”->;规则{a,b,c}”和“类型b”->;规则{c,e,z}”
这很容易用地图来管理。不完全是Command pattern但很接近
为每个类型设置验证器,然后创建类型之间的映射。如果你正在使用Java,这真的是最好的bean配置,但是肯定使用dependency injection
下面是一些简单的实现来说明这一点:
下面是我们将结合的另一个例子
下面是一个合成图:
下面是一段用法: