2010-05-05 3 views
2

Я прочитал 3 описания шаблона команды: wikipedia, dofactory и source making.Использование дизайна шаблона команды

Во всех из них UML показывает связь между клиентом и получателем конкретной конкретной команды, но не имеет никакого отношения к вызывающему. Но во всех трех примерах клиент является тем, кто инициирует invoker и вызывает его метод Execute.

Я думаю, что это должно быть отношение к invoker. Я пропустил что-то здесь? Может быть, даже базовое знание UML?

ответ

3

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

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

+0

Привет. Не могли бы вы подробнее рассказать о том, как клиент может сериализовать объект команды и отправить его на удаленную службу? Если мы предположим, что есть командный объект под названием «CreateGameCommand», который является конкретным классом «Command». Это объект, который мы отправили бы через сокет TCP/IP в службу удаления? Будет ли сервер затем вызывать метод execute() на этом объекте? Или клиент сначала вызовет метод execute()? Большое спасибо – Joeblackdev

+1

@Joeblackdev - Да, вы бы сериализовали CreateGameCommand, используя любой встроенный формат, который вам нравится (бинарный, XML, любой) и отправите его на сервер, и сервер будет десериализовать и вызвать метод execute() на этом объект. – Paolo

+0

Супер! Большое спасибо за вашу помощь. – Joeblackdev

Смежные вопросы