Ух ты... Немного не ожидал увидеть ссылку на это здесь... :-) Интересно, чем заинтересовал автора этот паттерн. Или просто, данная ссылка предоставлена в процессе пересмотра паттернов вообще? IMHO, это самый интересный (если не единственно полезный) из всех паттернов. Но только в том случае, если "стандартный" способ его применения (полиморфизм), будет заменён на вариант делегирования. Но это личное мнение. Было бы интересно выслушать автора :-)
PS: извините - сейчас в гостях, так что без авторизации :-) -- NameRec
Я не похож на человека который может использовать Шаблонный Метод? :-) Что до "вопроса" - даже не знаю что и сказать :-) Для МЕНЯ ЛИЧНО - наследование Шаблонным Методом - НЕ ЯВЛЯЕТСЯ. Шаблонный Метод Я ЛИЧНО рассматриваю обычно именно в контексте "делегирования" :-)
А наследование.. Ну - наследование... Это "что-то из ООП"... Полезная конструкция. Базовая. Но не "паттерн". По-моему и Тепляков о том же.
Ну и да. Цитата из Теплякова: "Подход на основе делегатов может применяться не только для "локально", но и передаваться извне другому объекту в аргументах конструктора. В этом случае грань между Шаблонным Методом и Стратегией стирается практически полностью, разница остается лишь на логическом уровне: Стратегия, даже представленная в виде делегата, обычно подразумевает более законченное действие, в то время, как "переменный шаг" Шаблонного Метода обычно является более контекстно-зависимой операцией."
Я вот тоже примерно так смотрю на вещи...
Вообще, что касается "паттернов" - я давно заметил, что в "реальном мире" границы между "классическими паттернами" - зачастую стираются.
«Я не похож на человека который может использовать Шаблонный Метод? :-)» -- Не в этом дело :-) Меня заинтересовало: почему из всего многообразия паттернов Вы дали ссылку именно на этот.
«Для МЕНЯ ЛИЧНО - наследование Шаблонным Методом - НЕ ЯВЛЯЕТСЯ.» -- Я не говорил, что наследование является шаблонным методом. Вместе с тем, классическое представление этого паттерна основывается на полиморфизме, на что указано в статье, на которую Вы сослались. Далее, там упоминается делегирование, но в примере используется callback. Хотя я и допускаю, что в "мире C#" различия между этими понятиями не делается. IMHO напрасно, кстати...
«"Подход на основе делегатов может применяться не только для "локально", но и передаваться извне другому объекту в аргументах конструктора...» -- Я говорил совсем не об этом... IMHO, такой подход тоже мало что даёт. Я имел ввиду применение делегирования в контексте шаблонного метода, позволяющее обеспечить реализацию основных идей АОП. Я думаю, что замена "шаблона" (или "алгоритма" в терминах автора) на протокол, выраженный событиями, совмещённая с эффективной реализацией Observer, может дать действительно много. Разумеется, "переменных шагов" может быть произвольное, и даже - не фиксированное количество.
"Меня заинтересовало: почему из всего многообразия паттернов Вы дали ссылку именно на этот."
-- ну наверное потому же - почему и Вы обратили на него внимание. Не зря же вы АОП вспоминаете :-)
Опять же вот Observer вспомнили (или Publisher/Subscriber) ;-) Вроде и "разные паттерны" - Template Method, Strategy, Observer. А суть то одна (для меня лично) - создание "точек подключения/расширения".
Ну и потом.. Мне просто НРАВИТСЯ то о ЧЁМ пишет Тепляков и нравится, то КАК он это делает. Чувствуется "проработанность подхода" и наличие "общего вектора".
Ух ты...
ОтветитьУдалитьНемного не ожидал увидеть ссылку на это здесь... :-)
Интересно, чем заинтересовал автора этот паттерн. Или просто, данная ссылка предоставлена в процессе пересмотра паттернов вообще?
IMHO, это самый интересный (если не единственно полезный) из всех паттернов. Но только в том случае, если "стандартный" способ его применения (полиморфизм), будет заменён на вариант делегирования.
Но это личное мнение. Было бы интересно выслушать автора :-)
PS: извините - сейчас в гостях, так что без авторизации :-)
--
NameRec
Я не похож на человека который может использовать Шаблонный Метод? :-)
УдалитьЧто до "вопроса" - даже не знаю что и сказать :-) Для МЕНЯ ЛИЧНО - наследование Шаблонным Методом - НЕ ЯВЛЯЕТСЯ. Шаблонный Метод Я ЛИЧНО рассматриваю обычно именно в контексте "делегирования" :-)
А наследование.. Ну - наследование... Это "что-то из ООП"... Полезная конструкция. Базовая. Но не "паттерн". По-моему и Тепляков о том же.
Ну и да. Цитата из Теплякова:
Удалить"Подход на основе делегатов может применяться не только для "локально", но и передаваться извне другому объекту в аргументах конструктора. В этом случае грань между Шаблонным Методом и Стратегией стирается практически полностью, разница остается лишь на логическом уровне: Стратегия, даже представленная в виде делегата, обычно подразумевает более законченное действие, в то время, как "переменный шаг" Шаблонного Метода обычно является более контекстно-зависимой операцией."
Я вот тоже примерно так смотрю на вещи...
Вообще, что касается "паттернов" - я давно заметил, что в "реальном мире" границы между "классическими паттернами" - зачастую стираются.
«Я не похож на человека который может использовать Шаблонный Метод? :-)»
ОтветитьУдалить-- Не в этом дело :-)
Меня заинтересовало: почему из всего многообразия паттернов Вы дали ссылку именно на этот.
«Для МЕНЯ ЛИЧНО - наследование Шаблонным Методом - НЕ ЯВЛЯЕТСЯ.»
-- Я не говорил, что наследование является шаблонным методом.
Вместе с тем, классическое представление этого паттерна основывается на полиморфизме, на что указано в статье, на которую Вы сослались. Далее, там упоминается делегирование, но в примере используется callback. Хотя я и допускаю, что в "мире C#" различия между этими понятиями не делается. IMHO напрасно, кстати...
«"Подход на основе делегатов может применяться не только для "локально", но и передаваться извне другому объекту в аргументах конструктора...»
-- Я говорил совсем не об этом... IMHO, такой подход тоже мало что даёт.
Я имел ввиду применение делегирования в контексте шаблонного метода, позволяющее обеспечить реализацию основных идей АОП.
Я думаю, что замена "шаблона" (или "алгоритма" в терминах автора) на протокол, выраженный событиями, совмещённая с эффективной реализацией Observer, может дать действительно много. Разумеется, "переменных шагов" может быть произвольное, и даже - не фиксированное количество.
"Меня заинтересовало: почему из всего многообразия паттернов Вы дали ссылку именно на этот."
Удалить-- ну наверное потому же - почему и Вы обратили на него внимание. Не зря же вы АОП вспоминаете :-)
Опять же вот Observer вспомнили (или Publisher/Subscriber) ;-) Вроде и "разные паттерны" - Template Method, Strategy, Observer. А суть то одна (для меня лично) - создание "точек подключения/расширения".
Ну и потом.. Мне просто НРАВИТСЯ то о ЧЁМ пишет Тепляков и нравится, то КАК он это делает. Чувствуется "проработанность подхода" и наличие "общего вектора".
Удалить