这些年来,我已经多次看到过这种代码模式。它是不断检查某个标准的过程,如果满足该标准,该方法会提前退出。有没有办法重构此代码以删除一些冗余检查,以便您不必持续检查每个支持方法的响应?
例如:
public String process(String s) {
String revised = doActionA(s);
if (checkCriteria(revised)) return revised;
revised = doActionB(revised);
if (checkCriteria(revised)) return revised;
return doActionC(revised);
}
答案 0 :(得分:2)
我认为你想要的是Chain of responsibility - Pattern。
你需要一个'Function':String -> String
和一个包含那些函数的List。评估员会调用其中的每一个,如果成功,它将不会调用剩余的 - 这也是你的例子中的内容。
术语“功能”可以是Java 8功能接口,Google Guava功能接口或只是专门的functional interface之类的
public interface {
String doAction(String parameterS);
}
您需要先配置评估程序,然后再使用它应该尝试的“功能”/“操作”。 这可能就像将它们添加到列表一样简单,但您可能也想将其提取到单独的类中。
如果您想要一些示例,我认为Google会为您提供大量示例。