假设您有 a List<Elements>
in memory 和 a List<Files>
,每个都是一个序列化的表示List<Elements>
目标是对每个元素执行相同的算法。
假设工作是计算元素
int i = 0;
for (Element e : list) {
++i;
}
for (File f : directory()) {
for (Element e : listWeSomehowGetFromTheFile) {
++i;
}
}
这可以以某种方式进一步抽象吗?本质上,算法是相同的(++i
)。有没有办法清理这个?
我当然可以拥有它自己的类Counter(List<Element>)
,它具有count ()
在列表中运行算法的方法。这样我们可以:
i+=Counter.count(list);
for (File f : directory()) {
i+=Counter.count(listWeSomehowGetFromTheFile);
}
但即使这样似乎也可以改进。
出于本示例的目的,假设所有操作(其中一堆)都将在内存中的列表和来自相同目录中相同文件的列表上执行。唯一会改变的是算法。
哪种模式最适合处理这样的事情?