我正在构建一个Android应用程序,它允许根据特定条件将对象合并在一起。目前,我希望使用if
语句(嵌套或不嵌套)来执行此操作,我只是想知道是否有更好的方法来执行此操作,因此它更灵活,更容易扩展。
例如,我有6个对象,其中3个是红色,2个是蓝色,1个是绿色。
可以应用的规则是:
这是一个非常基本的例子。除此之外还会有更多。
答案 0 :(得分:2)
我可能会在以下地区做点什么:
创建一个Rule-class,它保存给定规则的逻辑(你的if语句)。规则应具有优先级,以便可以与其他规则进行匹配,以确定应首先考虑哪个规则。它还需要一种方法,可以将未确定数量的对象传递给它,以检查这些对象是否符合规则。
创建一个RuleEngine,它包含所有规则的排序列表(按优先级,最高优先)。然后,将您想要匹配的对象传递给引擎,引擎将运行它们,如果满足规则则打破循环:
for( Rule rule : rules ) {
if( rule.check( objects ) ) {
//Do what needs to be done
break;
}
}
我不知道这对你是否有意义 - 我希望如此。
此外,如果我们谈论成千上万的规则,这个解决方案并不是最佳的。在这种情况下,您需要确定对象在检查之前可能有哪些规则(例如,如果您有两个红色和一个绿色,则无需检查“每个规则之一”)。 / p>