Frage

Hat jemand je gesehen / versucht, ein Service Locator Muster zu schreiben, die ein Guice Stil Konfigurationssystem verwendet?

Zur Zeit habe ich ein GWT-Projekt (die GWT-RPC zu verwenden, geschieht), die einen Befehl Muster verwendet, wobei mein RPC Servlet, das wie folgt aussieht ...

public interface TransactionService extends RemoteService {

    <T extends Response> T execute(Action<T> action);
}

In meiner aktuellen Implementierung des Verfahrens ausführt ich dies tun ...

if(action instanceof SomeActionImpl){
  doSomeActionImpl((SomeActionImpl)action);
}else if(action instanceof SomeActionImpl2){
  doSomeActionImpl2((SomeActionImpl2)action);
}

Was ich möchte, ist zu tun, herauszufinden, einen Weg zu bekommen von dem Riesen befreite if-Anweisung. Ich würde in gewisser Weise müssen der Registrierung, dass ActionImpl1 Klasse sollte auf eine andere Implementierung von TransactioNService delegiert werden.

Irgendwelche Ideen? Ich dachte nur das Hinzufügen von Einträgen zu einem HashMap, wo der Schlüssel der Klasse Aktion ist und der Wert der ServiceImpl der Klasse. Ein Ich habe einen Verweis auf die ServiceImpl Klasse I Guice verwenden könnte eine Instanz von TransactionService zu erhalten.

War es hilfreich?

Lösung

Werfen Sie einen Blick auf die net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry Klasse in GWT-Versand ( http://code.google.com/p/gwt-dispatch/ ); es tut genau das, was Sie vorschlagen. Hier ist die Membervariable, die die Handler speichert:

Private letzte Karte >, actionhandler > Handler;?

Wenn Sie die Handler auf der Server-Seite auszuführen, verwenden Sie dann die GWT-Dispatch serverseitigen Komponenten; wenn es clientseitige Material ist, dann betrachten Sie Ihre Disposition Klasse Modellierung auf DefaultActionHandlerRegistry.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top