Разница между методом шаблона (разделение) и структурой стратегии?
-
22-09-2019 - |
Вопрос
Мой учитель действительно хороший, и я склонен понимать его очки, но этот просто проходит через мою голову. Он объясняет метод шаблона в двух вариантах;
- Объединение: стандартный вариант, который состоит из абстрактного класса с некоторыми абстрактными методами, определяющими вариантные части фиксированного алгоритма.
- Разделение: его собственный вариант (я думаю?), Где класс содержит Templatemethod () и использует делегирование в интерфейс, чтобы варьировать части алгоритма, который выглядит для меня точно так же, как у рисунка стратегии.
Кто -нибудь может увидеть, в чем его точка зрения и как вариант «разделения» отличается от шаблона стратегии?
Я приложил изображение, содержащее два шаблона из его книги (которое еще не опубликовано).
Решение
Я никогда не слышал о «варианте разделения» метода шаблона, и я согласен с тем, что он выглядит чрезвычайно похоже на стратегию. Даже если есть какие -то рассуждения о владении интерфейсом или о том, как вы призываете их с точки зрения клиента, я вряд ли обнаружил, что есть какая -то выгода, чтобы считать их разными моделями.
Другие советы
В общем использовании метод шаблона использует подклассы обеспечить разнообразное поведение. Со стратегией вы внедрять Объект алгоритма. В вашем примере нет полезного различия между Шаблон (разделение) а также Стратегия Учитывая возраст гаммы и другие Забронируйте, представляя эту новую терминологию с адекватным объяснением разницы, вероятно, просто приведет к путанице, когда вы разговариваете с другими программистами. Избегайте использования его вне ваших уроков.
Шаблон позволяет вам получить доступ к защищенным членам в базовом классе. Стратегия позволяет вам разрабатывать ваши алгоритмы, более подходящие из объектов, которые их используют, и позволяет вам вводить один и тот же алгоритм во многие различные типы объектов.
Метод шаблона:
- Это поведенческий дизайн дизайна
- Он используется для создания заглушки метода и откладывания некоторых этапов реализации на подклассы. Он состоит из определенных шагов, порядок которого исправлен.
- Он определяет шаги по выполнению алгоритма и может обеспечить реализацию по умолчанию, которая может быть общей для всех или некоторых подклассов.
- Метод шаблона суперкласса вызывает методы из подклассов,
Стратегия шаблон:
- Это поведенческая схема
- Это основано на делегировании
- Он меняет кишки объекта, изменяя поведение метода
- Он используется для переключения между семейством алгоритмов
- Это меняет поведение объекта во время выполнения. Один алгоритм будет выбран из семейства алгоритма.
Основные различия.
- Метод шаблона использует наследование и Стратегия использует композицию
- А Метод шаблона Реализовано базовым классом не должно быть переопределено. Таким образом, структура алгоритма контролируется супер классом, и Детали реализованы в классах Sub
- Стратегия Инкапсулирует алгоритм, стоящий за интерфейсом, который дает нам возможность изменить алгоритм во время выполнения. Несколько стратегий обеспечивают различную реализацию для интерфейса.
Посмотрите на JournalDev Метод шаблона а также Стратегия статьи для лучшего понимания вместе с Распространение статьи.