2010-01-22 45 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是尋找這個故事的服務器端部分的好地方。