您没有具体说明您的内容if-else
报表正在做。说他们filter
取决于某些value
.
如果我正确理解你的问题,你想看看工厂模式 http://www.oodesign.com/factory-pattern.html.
这是一种干净的方法,易于维护并生成可读的代码。添加或删除Filter
也很简单,只需删除该类并将其从FilterFactory
哈希图。
创建一个接口:过滤器
public interface Filter {
void Filter();
}
创建一个工厂,根据您的情况返回正确的过滤器value
。而不是你的if-else
现在你可以使用以下内容:
Filter filter = FilterFactory.getFilter(value);
filter.filter();
编写 FilterFactory 的一种常见方法是使用HashMap
在里面。
public class FilterFactory{
static HashMap<Integer, Filter> filterMap;
static{
filterMap = new HashMap<>();
filterMap.put(0,new Filter0());
...
}
// this function will change depending on your needs
public Filter getFilter(int value){
return filterMap.get(value);
}
}
创建三个(根据您的情况)过滤器,如下所示:(尽管名称有意义)
public class Filter0 implements Filter {
public void filter(){
//do something
}
}
NOTE:当您想重用某些方法时,创建一个FilterUtility
类并使所有过滤器扩展此类,以便您可以使用所有函数而无需重写它们。