2010-01-22 41 views
2

我看了"Google Web Toolkit Architecture: Best Practices for Architecting Your GWT App",我很难弄清楚服务器端应该如何工作。如何在Java中实现命令模式?

幻灯片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); 
} 

但这意味着我要保持我每次添加一个动作的时间增加IFS给这个方法,我不得不使用未经检查的转换。有没有更好的方法来完成这项工作?

注意:从我读到的其他地方可知,命令模式通常包括要在Ac子类中采取的操作,但是因为这是为服务器传递一个客户端对象,因此需要执行一些操作行动必须分开。

回答

3

结帐GWT-Dispatch以及如何使用它here

另外,this可能是引用Ray Ryan的IO talk并构建Hello World应用程序的最佳文章之一。该应用程序使用GWT-Dispatch。

-JP

0

我将命令模式与访问者模式结合使用。这使得它类型安全并且易于扩展。

在服务器端需要的所有东西都是一个处理程序的存储库,您可以与Request对象进行匹配。有很多方法可以处理这个问题。访问者是一种方式,但您可以将命名约定映射到基础上,或者可以使用注入框架将请求对象映射到该类型的处理程序。

0

然后下到服务器来确定如何处理操作对象。正如其他人所说,gwt-dispatch是寻找这个故事的服务器端部分的好地方。