我有一个对象的集合。在这个集合中,我需要使用多个条件搜索对象的出现。 IE。
使用条件 1 进行搜索
如果条件 1 失败,则使用条件 2
如果条件 2 失败,则使用条件 3
如果条件 3 失败,则使用条件 4
这些条件中的每一个都由许多过滤器组成。
我正在寻找有关可维护的设计模式的建议。示例实现将不胜感激。
它看起来像责任链:
http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern
在面向对象设计中,责任链模式是
由命令对象源和一系列对象组成的设计模式
的加工对象。每个处理对象包含的逻辑
定义它可以处理的命令对象的类型;其余的是
传递到链中的下一个处理对象。还有一个机制
存在用于将新的处理对象添加到该链的末尾。
不要太执着于“命令对象”的事情。 CoR 模式的核心是它是一个对象链,这些对象要么自行处理工作,要么将其传递给链中的下一个对象。
执行:
public interface LinkInChain {
boolean search(final Data data, final OnFound onFound);
}
public abstract class LinkInChainBase {
final private LinkInChain nextLink;
public LinkInChainBase(final LinkInChain nextLink) {
this.nextLink = nextLink;
}
protected abstract innerSearch(final Data data, final OnFound onFound);
public boolean search(final Data data, final OnFound onFound) {
if (!innerSearch(data, onFound)) {
return nextLink.search(data, onFound);
}
}
}
public class SearchFactory {
private final LinkInChain lastLink = new LinkInChain() {
public boolean search(final Data data, final OnFound onFound) {
return false;
}
}
public LinkInChain searchChain() {
return new SearchUsingCond1(
new SearchUsingCond2(
new SearchUsingCond3(
new SearchUsingCond4(
lastLink
)
)
)
)
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)