Разница между методом шаблона (разделение) и структурой стратегии?

StackOverflow https://stackoverflow.com/questions/1998336

Вопрос

Мой учитель действительно хороший, и я склонен понимать его очки, но этот просто проходит через мою голову. Он объясняет метод шаблона в двух вариантах;
- Объединение: стандартный вариант, который состоит из абстрактного класса с некоторыми абстрактными методами, определяющими вариантные части фиксированного алгоритма.
- Разделение: его собственный вариант (я думаю?), Где класс содержит Templatemethod () и использует делегирование в интерфейс, чтобы варьировать части алгоритма, который выглядит для меня точно так же, как у рисунка стратегии.

Кто -нибудь может увидеть, в чем его точка зрения и как вариант «разделения» отличается от шаблона стратегии?
Я приложил изображение, содержащее два шаблона из его книги (которое еще не опубликовано).

http://img64.imageshack.us/img64/3620/strategytemplate.jpg

Это было полезно?

Решение

Я никогда не слышал о «варианте разделения» метода шаблона, и я согласен с тем, что он выглядит чрезвычайно похоже на стратегию. Даже если есть какие -то рассуждения о владении интерфейсом или о том, как вы призываете их с точки зрения клиента, я вряд ли обнаружил, что есть какая -то выгода, чтобы считать их разными моделями.

Другие советы

В общем использовании метод шаблона использует подклассы обеспечить разнообразное поведение. Со стратегией вы внедрять Объект алгоритма. В вашем примере нет полезного различия между Шаблон (разделение) а также Стратегия Учитывая возраст гаммы и другие Забронируйте, представляя эту новую терминологию с адекватным объяснением разницы, вероятно, просто приведет к путанице, когда вы разговариваете с другими программистами. Избегайте использования его вне ваших уроков.

Шаблон позволяет вам получить доступ к защищенным членам в базовом классе. Стратегия позволяет вам разрабатывать ваши алгоритмы, более подходящие из объектов, которые их используют, и позволяет вам вводить один и тот же алгоритм во многие различные типы объектов.

Метод шаблона:

  1. Это поведенческий дизайн дизайна
  2. Он используется для создания заглушки метода и откладывания некоторых этапов реализации на подклассы. Он состоит из определенных шагов, порядок которого исправлен.
  3. Он определяет шаги по выполнению алгоритма и может обеспечить реализацию по умолчанию, которая может быть общей для всех или некоторых подклассов.
  4. Метод шаблона суперкласса вызывает методы из подклассов,

Стратегия шаблон:

  1. Это поведенческая схема
  2. Это основано на делегировании
  3. Он меняет кишки объекта, изменяя поведение метода
  4. Он используется для переключения между семейством алгоритмов
  5. Это меняет поведение объекта во время выполнения. Один алгоритм будет выбран из семейства алгоритма.

Основные различия.

  1. Метод шаблона использует наследование и Стратегия использует композицию
  2. А Метод шаблона Реализовано базовым классом не должно быть переопределено. Таким образом, структура алгоритма контролируется супер классом, и Детали реализованы в классах Sub
  3. Стратегия Инкапсулирует алгоритм, стоящий за интерфейсом, который дает нам возможность изменить алгоритм во время выполнения. Несколько стратегий обеспечивают различную реализацию для интерфейса.

Посмотрите на JournalDev Метод шаблона а также Стратегия статьи для лучшего понимания вместе с Распространение статьи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top