2013-04-12 82 views
0

我目前正在爲GWT設計一個NAO機器人的遠程,我正在尋找最佳實踐來執行通過RPC的按鈕的方法。目前我正在用event.getSource()的標題檢查按鈕名稱。但是這會導致大量if語句。我怎麼能把它做得漂亮整潔? ;)爲許多按鈕實現ClickHandlers的最佳實踐

+0

小心解釋一下嗎?這個問題有點含糊。我想你想要的是將命令發送到服務器端代碼並​​從那裏控制機器人的方法?你目前的實施(或設計)是什麼。 –

+0

據我所知,按鈕被點擊在遠程位置,你想在服務器端的一些代碼比一堆更優雅? – tgkprog

+0

它目前看起來是這樣的: '如果(button.title == 「走」) //做的東西 否則,如果(button.title == 「靜坐」) //做其他的東西 ' 等在...我想有這樣做的更好的方法 –

回答

1

你可以使用一個枚舉或整數作爲標識符你用你的Button構造函數設置。然後在服務器端,你可以用switch case語句保存一些代碼行。

public enum MyButtons { 
    WALK, 
    SIT, 
    ... 
    } 
[...] 
//ON CLIENT 
Button whatever = new Button(MyButtons.WALK); 

//ON SERVER 
MyButtons action = whatever.getType(); 
// getType() should provide the value from the constructor 


switch(action) 
    { 
    case WALK : doStuff(); 
    case SIT : doStuff(); 
    ... 
    } 
+0

謝謝,看起來不錯! –

1

你可以使用命名方法和一些方法反射。

比方說你有一個名爲按鈕: 動作1 動作2 ACTION3

如果這是地方,你可以不同的監聽器添加到每個。因爲它的遙控器,我知道你只有名字。

在遠程實現類有方法叫做:

doAction1 doAction2 doAction3

而且在你的遠程調用看名字,使INIT字母大寫的地方,加辦呢得到方法。你甚至可以通過名稱緩存在地圖的方法

地圖

一旦你的方法,調用它的一個實例工人

+0

所以你認爲所有按鈕不同的監聽器?遙控器上有大約15個按鈕,這將是很多代碼,不是嗎? 我的問題是,它是如何實現在其他網站上有很多按鈕? –

+0

我有許多聽衆的代碼,並建議作爲您的不同行動的解決方案。在JVM或代碼回購中幾乎沒有超過15或100個類。將使代碼清晰,少雜亂 – tgkprog