Java 侦听器是一个很好的解决方案吗?它们是如何实现的?

Java 侦听器是一个很好的解决方案吗?它们是如何实现的?,java,android,architecture,listener,handler,Java,Android,Architecture,Listener,Handler,在我的Android项目中,我有一个singleton类,它每秒从外部源检索数据。检索数据时,它应该通知一些数据显示对象有新的可用数据,以便它们可以自我更新 我认为实现这一点的最佳方法是让数据显示器实现一些监听接口,然后向数据检索器singleton注册 这是一个好的解决方案吗?这个问题通常是如何解决的?是否有我应该使用的现成类/框架?您需要的是回调。如果有新数据可用,将自动通知实现回调的其他类 下面是对的很好的描述。您需要的是回调。如果有新数据可用,将自动通知实现回调的其他类 下面是一个很好的

在我的Android项目中,我有一个singleton类,它每秒从外部源检索数据。检索数据时,它应该通知一些数据显示对象有新的可用数据,以便它们可以自我更新

我认为实现这一点的最佳方法是让数据显示器实现一些监听接口,然后向数据检索器singleton注册


这是一个好的解决方案吗?这个问题通常是如何解决的?是否有我应该使用的现成类/框架?

您需要的是回调。如果有新数据可用,将自动通知实现回调的其他类


下面是对的很好的描述。

您需要的是回调。如果有新数据可用,将自动通知实现回调的其他类


下面是一个很好的描述。

Yes看起来像是观察者模式的经典用例

是看起来像是观察者模式的经典用例

一种解决方案是实现via接口和类。例如:

import java.util.Observable;

public class DataModel extends Observable
{
    public void retrieveData()
    {
        // ...

        setChanged();
        notifyObservers(); // or notifyObservers(someData);
    }
}
您需要像这样注册观察员:

DataModel dm = ...;
dm.addObserver(viewClass1);
dm.addObserver(viewClass2);
dm.addObserver(viewClass3);

一种解决方案是实现via接口和类。例如:

import java.util.Observable;

public class DataModel extends Observable
{
    public void retrieveData()
    {
        // ...

        setChanged();
        notifyObservers(); // or notifyObservers(someData);
    }
}
您需要像这样注册观察员:

DataModel dm = ...;
dm.addObserver(viewClass1);
dm.addObserver(viewClass2);
dm.addObserver(viewClass3);

您不应该正确地使用这些类,因为它们有许多缺点
Observable
是一个类,因为java中没有多重继承,所以这可能是不可能的。只需自己实现可观察对象和观察者!您不应该正确地使用这些类,因为它们有许多缺点
Observable
是一个类,因为java中没有多重继承,所以这可能是不可能的。只需自己实现可观察对象和观察者!