Java 在Android中使用命令模式并结合Http请求处理程序来处理其结果
我的实际问题在页面底部,可能不需要您查看我的所有代码 因此,我想在我的Android应用程序中使用命令模式。我有一个类Java 在Android中使用命令模式并结合Http请求处理程序来处理其结果,java,android,command-pattern,Java,Android,Command Pattern,我的实际问题在页面底部,可能不需要您查看我的所有代码 因此,我想在我的Android应用程序中使用命令模式。我有一个类HttpRequestHandler,它扩展了AsyncTask,因此有doInBackground和onPostExecute方法HttpRequestHandler将URL和HttpRequest类型作为参数 我想做的是将一个方法(以接口的形式)传递给HttpRequestHandler,以便在onPostExecute中调用该方法,并让它在给定的textview中显示从Ht
HttpRequestHandler
,它扩展了AsyncTask
,因此有doInBackground
和onPostExecute
方法HttpRequestHandler
将URL和HttpRequest类型作为参数
我想做的是将一个方法(以接口的形式)传递给HttpRequestHandler
,以便在onPostExecute
中调用该方法,并让它在给定的textview中显示从Http请求获得的结果。这样我就不必在我的onPostExecute
不过我需要一些帮助来执行死刑。在本例中,我有两个单独的类来实现命令
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();
}
这一切都很好,我似乎可以将任何旧的
命令实现传递给它,但我似乎无法在网上找到任何具有相同语法或功能的引用。我听过一些关于工厂模式的介绍,但我觉得命令模式并不依赖于其他模式来实现这样的功能。任何方向都行。事实上,这是泛型的问题。通过使用T
extendCommand
,我可以确保我的参数将是Command
HttpRequestHandler
现在应该是这样的
public class HttpRequestHandler extends AsyncTask<String, String, String>{
Command presenter;
public <T extends Command> HttpRequestHandler(T presenter){
this.presenter = presenter;
}
presenter.execute("Success!");
}
公共类HttpRequestHandler扩展异步任务{
指挥演示者;
公共HttpRequestHandler(T演示者){
this.presenter=演示者;
}
执行(“成功!”);
}
不需要可怕的演员阵容。结尾的“温柔”部分显示了一个初学者是多么害怕提出可能有意义的问题,这是因为一些头脑发热的人赢得了良好的声誉,但没有体面。这是一个信号,伙计们。“温柔一点”我刚刚问了那么多关于编程的看似无害的问题,结果却因为一些真正愚蠢的事情而受到严厉的谴责。
public class HttpRequestHandler extends AsyncTask<String, String, String>{
Command presenter;
public <T extends Command> HttpRequestHandler(T presenter){
this.presenter = presenter;
}
presenter.execute("Success!");
}