テンプレートメソッドパターンを使用して、リストをどのようにループすることができますか?
-
11-12-2019 - |
質問
Javaのテンプレートメソッドパターンの実装例を探しています。たとえば、List<T>
をループすることができる一般クラスを作成し、リスト内のvoid execute(T t)
型の各項目に署名T
を使用してテンプレートメソッドを実行することができます。
解決
テンプレートメソッドパターンのためのWikipediaの記事には非常に明確なJavaの例があります。
パターンの基本概念は、コードの可変部分が別々の方法で分割されていることです。それは、共有部分がスーパークラスに残ることを可能にしますが、子孫クラスは可変部分に対応するメソッドを実装し、必要に応じて異なる動作を提供します。
パターンの一般的に受け入れられている実装に近く滞在したい場合は、これらの行に沿って行ってください。
public abstract class TemplateMethodLoop<T> {
public abstract void execute(T t);
public void loop(List<T> array) {
for (T t : array) {
this.execute(t);
}
}
}
public class TemplateMethodPatternClient {
public void stringListPrinter(List<String> stringList) {
new TemplateMethodLoop<String>() {
public void execute(String string) {
System.out.println(string);
}
}.loop(stringList);
}
}
.
この場合、必要な行動の具体的な実装は、 extendend ののstringListPrinter()
スーパークラス内の匿名内部クラスにあります。
所属していません StackOverflow