如何使用模板方法模式遍历List <t>?</t>

时间:2012-03-11 16:43:57

标签: java generics template-method-pattern

我正在寻找Java中模板方法模式的示例实现。例如,假设我想创建一个泛型类,它可以遍历List<T>并在列表中的每个void execute(T t)项上执行带有签名T的模板方法。

1 个答案:

答案 0 :(得分:2)

Wikipedia article for the Template method pattern中有一个非常清晰的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);
    }
}

请注意,在这种情况下,所需行为的具体实现位于stringListPrinter()方法中的匿名内部类,扩展 TemplateMethodLoop超类。