2011-02-16 85 views
1

我的問題是基於使用命令模式調用服務器方法。但是有很多可能的命令。我想介紹每個命令實例的'execute'方法的返回類型。我知道這不是命令模式的預期用途,但我沒有任何其他選擇。我需要調整命令模式來爲我工作。一般返回類型 - Java

對於每個命令中'execute'方法的方法簽名,我可能有什麼作爲返回類型?我猜它必須是一個協變的返回類型。這不是一個理想的解決方案,但我沒有其他選擇。我正在爲我的android應用程序開發服務器,並且RMI在Android SDK中不可用。我會很感激任何有關退貨類型問題的建議。我需要考慮所有不同命令可能返回的所有返回類型。我不確定是否有返回某種通用返回類型的問題。

我已經看過這個話題: command pattern returning status 但我需要更多的靈感。

回答

3

我可能不明白這裏真正的問題,但這聽起來很簡單。

public interface Command<T> { 
    T execute(); 
} 

再德的命令可能是:

public class FooCommand implements Command<Bar> { 

    public Bar execute() { 
    ... 
    } 
} 

還是有追趕的地方?

+0

完美 - 泛型。我失去了聯繫!抱歉。感謝您的幫助:) – Joeblackdev 2011-02-16 23:20:29

1

它看起來像你真正想要的是Android不支持的RMI。

您可以嘗試使用輕量級RMI。

爲了實現自己的東西,從biziclop的界面開始,

// suppose there are object input/output streams established 

// on client side 
FooCommand foo = new FooCommand(params..); 
Bar bar = remoteExec(foo); 

<T> T remoteExec(Command<T> cmd) 
    output.writeObject(cmd); 
    return (T)input.readObject(); 

// on server side 

    Command cmd = (Command)input.readObject(); 
    Object result = cmd.execute(); 
    output.writeObject(result); 
+0

你好。那裏有輕量級的RMI庫嗎?如果是這樣,我還沒有找到他們的運氣... – Joeblackdev 2011-02-16 23:22:42