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