В статье Википедии есть довольно ясный пример Java для шаблона метода Template .
Основная концепция шаблона состоит в том, что переменные части кода разбиты наотдельные методы.Это позволяет общим частям оставаться в суперклассе, в то время как классы-потомки реализуют методы, которые соответствуют переменным частям, обеспечивая при необходимости различное поведение.
Если вы хотите оставаться рядом с общепринятой реализациейшаблон, ваш код должен выглядеть следующим образом:
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
.