Как я могу реализовать шаблон команды в Java? - PullRequest
2 голосов
/ 22 января 2010

Я смотрел "Архитектура Google Web Toolkit: лучшие практики для разработки вашего приложения GWT" и у меня возникают проблемы с выяснением того, как должна работать серверная часть.

Слайд 21 показывает:

/** The name Command is taken */
interface Action<T extends Response> { }

interface Response { }

interface ContactsService extends RemoteService {
  <T extends Response> T execute(Action<T> action);
}

interface ContactsServiceAsync {
  <T extends Response> void execute(Action<T> action,
      AsyncCallback<T> callback);
}

Я думал, что это значит, что я мог бы создать

public ResponseSubclass execute(ActionSubclass action) { ... }

и gwt выберет этот метод, когда он будет соответствовать моим точным параметрам, но это не так. На данный момент я использую:

if (action.getClass().getName() == ActionSubclass.class.getName())
{
    return (T) execute((ActionSubclass)action);
}

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

примечание: из того, что я читал где-то в другом месте, шаблон команды обычно включает в себя действия, которые необходимо выполнить в подклассе Ac, но поскольку это передает клиентскому объекту для сервера выполнение какого-либо действия, выполнение действия должен быть отделен.

Ответы [ 3 ]

3 голосов
/ 22 января 2010

Оформление заказа GWT-Dispatch и как его использовать здесь .

Кроме того, this может быть одной из лучших статей, которые ссылаются на выступление Рэя Райана и создают приложение Hello World. Приложение использует GWT-Dispatch.

-JP

0 голосов
/ 26 января 2010

Затем сервер должен решить, что делать с объектом действия. Как уже говорили другие, gwt-dispatch - хорошее место для поиска серверной части этой истории.

0 голосов
/ 25 января 2010

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

Все, что вам нужно на стороне сервера, - это хранилище обработчиков, которые вы можете сопоставить с объектом Request. Есть много способов справиться с этим. Посетитель - это один из способов, но вы можете просто основать отображение на соглашении об именах или использовать инфраструктуру внедрения для сопоставления объекта запроса с обработчиком этого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...