がList<Elements>
メモリ内にあり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);
}
しかし、これでも改善できるようです。
この例では、すべての操作(それらの束)がメモリ内のリストと同じディレクトリ内の同じファイルからのリストで実行されると仮定します。変わるのはアルゴだけです。
このようなものを処理するには、どのパターンが最適ですか?