实用程序类保存对接口的引用不好?

时间:2014-03-07 22:43:52

标签: java oop

如果下载失败,我正在查看一个负责从网站下载数据或从本地数据库获取数据的类。

我的问题是,因为在这种情况下,downloadListFromServer是一个异步调用,所以我们不会这样做.listener = listener ;?因为在初始调用使用侦听器之前可以再次调用该方法。在第一次下载之前基本上改变监听器中的引用可以使用它。

修改downloadListFromServer以接受侦听器并从getList传递它是不是更好?

注意代码被删除,所以即使它看起来像我们也不想在我们的情况下直接调用downloadListFromServer。

private MyListnernType listener;

public void getList(TextListType type, MyListnernType listener){


    this.listener = listener; // is this bad?


    downloadListFromServer(type);  // uses 
}

private  void downloadListFromServer(final TextListType type){

    Downloader.getTextList(type, new DownloadListener() {

    @Override
    public void downloadSucceeded( int statusCode, String response) {
        listener.getTextListSucceeded(response);    
    }

    });
}

};

1 个答案:

答案 0 :(得分:1)

是的,这是一个坏主意。应该将侦听器作为参数传递给第二个方法。

如果您的对象必须下载多个文件并始终警告同一个侦听器,则将侦听器保持为字段是可以接受的。但是应该将侦听器传递给对象的构造函数,或传递给setListener()方法,这将明确表示您不能为两个不同的消息传递两个不同的侦听器。