我的實際問題是朝向頁面底部,並且可能不需要您查看我的所有代碼。在Android中使用命令模式並結合Http請求處理程序處理其結果
所以我想我想在我的Android應用程序中使用命令模式。我有一個類HttpRequestHandler
其中extends AsyncTask
,因此有doInBackground
和onPostExecute
方法。 HttpRequestHandler
接受一個URL和一個HttpRequest類型作爲參數。
我想要做的是將一個方法(以接口的形式)傳遞給HttpRequestHandler
,以便在onPostExecute
中我可以調用該方法並讓它顯示從給定textview中的Http請求獲得的結果。這樣我就不必在我的onPostExecute
中使用巨大的switch(case)
,但我需要一些幫助來執行。在這種情況下,我有兩個獨立的類實現Command。
public interface Command{
public void execute(JSONObject json);
}
public class DisplayResult implements Command{
public TextView textview;
public DisplayResult(TextView textview){
this.textview = textview;
}
@Override
public void execute(JSONObject output){
textview.setText(output.getString("mystring")
}
}
public class ConfirmPost implements Command{
public ConfirmPost(){
}
@Override
public void execute(JSONObject output){
Log.d("Success! ","POST successfull");
}
}
而且兩次調用HTTPRequestHandler
,一個傳遞DisplayResult
和一個傳遞ConfirmPost
類。 公共靜態無效
TextView mytextview = (TextView) findViewById(R.id.mytextview);
new HttpRequestHandler(new DisplayResult(mytextview)).execute("myurl","GET");
new HttpRequestHandler(new ConfirmPost()).execute("myurl","POST");
現在,它在我的HttpRequestHandler
在那裏我遇到的問題。
public class HttpRequestHandler extends AsyncTask<String, String, String>{
Command presenter;
Public HttpRequestHandler(Object presenter){
this.presenter = (Command) presenter;
}
Public String doInBackground(String... uri){
...
}
Public onPostExecute(String result){
presentation = new JSONObject(result);
presenter.execute();
}
使用對象作爲參數類型在我看來,只是感覺,不是最佳實踐。我從來沒有見過任何人像這樣使用它,並且必須拋出給定對象爲Command
的想法揉搓我錯誤的方式。有沒有什麼辦法,我可以讓類的信任,我給它一個Command對象?
這是我第一次使用命令模式,但我還沒有完全理解它。要溫柔。
UPDATE
它看起來像我想在這裏使用泛型。儘管如此,我仍然不知道如何以最佳實踐的方式執行該操作。我現在擁有的是:
Command presenter;
public <Command> HttpRequestHandler(Command presenter){
this.presenter = (com.example.myproject.Command) presenter;
//ugly!
}
而且我似乎可以通過它的任何舊的實現的Command
這工作得很好,我似乎無法在網上找到的任何引用具有相同的語法和功能。我聽過一些關於工廠模式的提及,但我有一種感覺,Command Pattern不依賴於另一種模式來完成這種功能。任何方向將不勝感激。
最後的「溫柔」部分顯示了初學者在SO上有多少人害怕提出可能有意義的問題,這是因爲一些熱衷於獲得良好聲譽但沒有禮貌的人。這是一個信號傢伙。 「溫柔」 – therealprashant
我剛纔問了很多看似無關緊要的問題,但關於編程只是爲了真正愚蠢的東西而遭到嚴厲斥責。 – Csteele5