首页>代码>java小程序:可扩展可复用的数据分析代码设计(读取数据,分析,输出),研究生作业>/OOP-Experiment-1/src/nv/analyzer/AnalyzerBuilder.java
package nv.analyzer;
import nv.data.DataStore;
import java.util.ArrayList;
import java.util.List;
/**
* 分析方法工厂,通过组合分析方法产生分析链,和执行分析链产生最终分析结果. (创建者模式)
* 正常应该把执行链独立出来一个类,但是要求说要放在一起.
* 先执行创建,然后附加分析方法,最后执行分析.
*/
public class AnalyzerBuilder {
private List<AnalyzerMethod> analyzerMethodLinks;
private AnalyzerBuilder() {
}
public static AnalyzerBuilder createAnalyzerLinks() {
AnalyzerBuilder analyzerBuilder = new AnalyzerBuilder();
analyzerBuilder.analyzerMethodLinks = new ArrayList<AnalyzerMethod>();
return analyzerBuilder;
}
public AnalyzerBuilder append(AnalyzerMethod analyzerMethod) {
analyzerMethodLinks.add(analyzerMethod);
return this;
}
public AnalyzerBuilder insert(AnalyzerMethod analyzerMethod, int index) {
analyzerMethodLinks.add(index, analyzerMethod);
return this;
}
/**
* 构造仓库数据分析者
*
* @return
*/
public StoreDataAnalyzer build() {
return new StoreDataAnalyzer() {
@Override
public DataStore analy(DataStore dataStore) {
DataStore result = null;
for (int i = 0; i < analyzerMethodLinks.size(); i++) {
result = analyzerMethodLinks.get(i).execute(result == null ? dataStore : result);
}
return result;
}
};
}
}
最近下载更多
最近浏览更多
uid0901 LV2
2024年4月2日
1195146710 LV4
2024年1月16日
qq1434100519 LV1
2023年11月1日
2017143155 LV12
2023年6月21日
微信网友_6512020493586432 LV2
2023年6月9日
胡明杨
2023年5月4日
暂无贡献等级
guozhihua12 LV3
2023年4月4日
2716804680 LV9
2023年3月23日
科技家 LV2
2023年3月15日
小小虎牙妹 LV4
2023年3月14日

