Как я могу просмотреть список <T>, используя шаблон-метод? - PullRequest
0 голосов
/ 11 марта 2012

Я ищу пример реализации шаблона-шаблона в Java.Предположим, например, что я хотел бы создать универсальный класс, который может проходить через List<T> и выполнять шаблонный метод с подписью void execute(T t) для каждого элемента типа T в списке.

1 Ответ

2 голосов
/ 11 марта 2012

В статье Википедии есть довольно ясный пример 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.

...