суббота, 8 марта 2014 г.

Ссылка. Паттерн Шаблонный Метод

6 комментариев:

  1. Ух ты...
    Немного не ожидал увидеть ссылку на это здесь... :-)
    Интересно, чем заинтересовал автора этот паттерн. Или просто, данная ссылка предоставлена в процессе пересмотра паттернов вообще?
    IMHO, это самый интересный (если не единственно полезный) из всех паттернов. Но только в том случае, если "стандартный" способ его применения (полиморфизм), будет заменён на вариант делегирования.
    Но это личное мнение. Было бы интересно выслушать автора :-)

    PS: извините - сейчас в гостях, так что без авторизации :-)
    --
    NameRec

    ОтветитьУдалить
    Ответы
    1. Я не похож на человека который может использовать Шаблонный Метод? :-)
      Что до "вопроса" - даже не знаю что и сказать :-) Для МЕНЯ ЛИЧНО - наследование Шаблонным Методом - НЕ ЯВЛЯЕТСЯ. Шаблонный Метод Я ЛИЧНО рассматриваю обычно именно в контексте "делегирования" :-)

      А наследование.. Ну - наследование... Это "что-то из ООП"... Полезная конструкция. Базовая. Но не "паттерн". По-моему и Тепляков о том же.

      Удалить
    2. Ну и да. Цитата из Теплякова:
      "Подход на основе делегатов может применяться не только для "локально", но и передаваться извне другому объекту в аргументах конструктора. В этом случае грань между Шаблонным Методом и Стратегией стирается практически полностью, разница остается лишь на логическом уровне: Стратегия, даже представленная в виде делегата, обычно подразумевает более законченное действие, в то время, как "переменный шаг" Шаблонного Метода обычно является более контекстно-зависимой операцией."

      Я вот тоже примерно так смотрю на вещи...

      Вообще, что касается "паттернов" - я давно заметил, что в "реальном мире" границы между "классическими паттернами" - зачастую стираются.

      Удалить
  2. «Я не похож на человека который может использовать Шаблонный Метод? :-)»
    -- Не в этом дело :-)
    Меня заинтересовало: почему из всего многообразия паттернов Вы дали ссылку именно на этот.

    «Для МЕНЯ ЛИЧНО - наследование Шаблонным Методом - НЕ ЯВЛЯЕТСЯ.»
    -- Я не говорил, что наследование является шаблонным методом.
    Вместе с тем, классическое представление этого паттерна основывается на полиморфизме, на что указано в статье, на которую Вы сослались. Далее, там упоминается делегирование, но в примере используется callback. Хотя я и допускаю, что в "мире C#" различия между этими понятиями не делается. IMHO напрасно, кстати...

    «"Подход на основе делегатов может применяться не только для "локально", но и передаваться извне другому объекту в аргументах конструктора...»
    -- Я говорил совсем не об этом... IMHO, такой подход тоже мало что даёт.
    Я имел ввиду применение делегирования в контексте шаблонного метода, позволяющее обеспечить реализацию основных идей АОП.
    Я думаю, что замена "шаблона" (или "алгоритма" в терминах автора) на протокол, выраженный событиями, совмещённая с эффективной реализацией Observer, может дать действительно много. Разумеется, "переменных шагов" может быть произвольное, и даже - не фиксированное количество.

    ОтветитьУдалить
    Ответы
    1. "Меня заинтересовало: почему из всего многообразия паттернов Вы дали ссылку именно на этот."

      -- ну наверное потому же - почему и Вы обратили на него внимание. Не зря же вы АОП вспоминаете :-)

      Опять же вот Observer вспомнили (или Publisher/Subscriber) ;-) Вроде и "разные паттерны" - Template Method, Strategy, Observer. А суть то одна (для меня лично) - создание "точек подключения/расширения".

      Удалить
    2. Ну и потом.. Мне просто НРАВИТСЯ то о ЧЁМ пишет Тепляков и нравится, то КАК он это делает. Чувствуется "проработанность подхода" и наличие "общего вектора".

      Удалить