2016-08-31 7 views
-1

Каковы некоторые примеры использования, когда шаблон команды может быть полезен? Я читал об этом, и у меня есть хорошая идея о том, как его реализовать. Но это очень расплывчато, когда дело доходит до знания, когда его использовать.Командный шаблон для использования?

Одна из проблем, которые она решает, состоит в том, чтобы отделить API класса. Но что это значит? Каков недостаток прямого вызова методов объекта?

Какие еще проблемы он решает и как им это выгодно?

+0

Wikipedia имеет всестороннее освещение по теме - https://en.wikipedia.org/wiki/Command_pattern. Если вам нужно изменить методы объекта, и эти методы вызывают непосредственно в программном проекте, тогда проект должен быть соответствующим образом обновлен там, где эти прямые вызовы сделаны. Это недостаток технического обслуживания. Развязка предотвращает этот тип расходов на обслуживание. – ThisClark

+0

@ThisClark Вики-это одно из первых мест, куда я пошел, но большая часть контента (реализация, терминология и т. Д.) Не очень полезны, кроме вступлений. В соответствии с недостатком обслуживания я не совсем понимаю. Не могли бы вы привести конкретный пример, пожалуйста? – user1164937

+1

Возможный дубликат [Почему я должен использовать шаблон проектирования команд, когда я могу легко вызвать необходимые методы?] (Http://stackoverflow.com/questions/32597736/why-should-i-use-the-command-design-pattern -while-i-can-easy-call-required-met) – jaco0646

ответ

0

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

Он также позволяет вам связывать команды и выполнять их в последовательном или параллельном режиме (зависимости от языковых возможностей) и создавать макросы.

Вы можете увидеть больше примеров на этой странице: http://gameprogrammingpatterns.com/command.html

+1

+ шанс для легкого уничтожения (последовательности) команд (ов) – charlie

2

команда полезна, когда нужно лечить действие как объект, так что вы можете:

  • добавить новые типы действий withouth переключатель случай конструкция (читай: плагин)
  • магазин действие, которое будет exectute позже (например, активный объект.)
  • ассоциировать с действием дополнительной информации (например, как отменить действие)

Простым примером шаблона команды в реальном коде является следующее.

При реализации протокола вы можете использовать шаблон команды для развязки синтаксического анализа байтового потока из действия, связанного с сообщением (помните, что в OO вы не управляете сообщениями, а сообщения управляют собой :-)

Когда канал получает некоторый байт от провода, он строит правый объект команды (например, используя прототип или абстрактный заводский шаблон) и помещает его в очередь, которая будет выполнена позже (возможно, в другом потоке).