2010-01-22 4 views
2

J'ai regardé "Google Web Toolkit Architecture: Best Practices for Architecting Your GWT App" et je n'arrive pas à comprendre comment le côté serveur est censé fonctionner.Comment puis-je implémenter le modèle de commande en Java?

Slide 21: montre

/** 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); 
} 

Je pensais que cela voulait dire que je pourrais être en mesure de créer

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

et GWT choisirait cette méthode quand il correspond à mes paramètres exacts, mais il n'a pas . En ce moment je suis en utilisant:

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

mais cela signifie que je dois continuer à ajouter ifs à cette méthode chaque fois que j'ajouter une action et je dois utiliser des moulages non vérifiées. Y a-t-il une meilleure façon de faire ce travail?

note: d'après ce que j'ai lu ailleurs, le modèle de commande incluait généralement les actions à effectuer dans la sous-classe Ac, mais parce que cela passe un objet client pour le serveur, l'exécution du l'action doit être séparée.

Répondre

3

Commander GWT-Dispatch et comment l'utiliser here. En outre, this peut être l'un des meilleurs articles qui fait référence à la conférence d'E/S de Ray Ryan et construit une application Hello World. L'application utilise GWT-Dispatch.

-JP

0

J'utilise le modèle de commande en combinaison avec un motif de visiteur. Cela le rend typé et facile à étendre.

Tout ce dont vous avez besoin du côté serveur est un référentiel de gestionnaires que vous pouvez associer à l'objet Request. Il y a plein de façons de gérer cela. Le visiteur est à sens unique, mais vous pouvez simplement baser le mappage sur la convention de dénomination ou vous pouvez utiliser un cadre d'injection pour mapper l'objet de requête à un gestionnaire pour ce type.

0

Il revient ensuite au serveur de déterminer ce qu'il doit faire avec l'objet action. Comme d'autres l'ont dit, gwt-dispatch est un bon endroit pour chercher la partie côté serveur de cette histoire.

Questions connexes