テンプレートメソッドパターンを使用して、リストをどのようにループすることができますか?

StackOverflow https://stackoverflow.com//questions/9656834

質問

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()スーパークラス内の匿名内部クラスにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top