当前位置: 首页 > 知识库问答 >
问题:

可观察的Java接口

卢晟
2023-03-14

我有以下资料:

>

  • AJava类:ClassA实现观察者

    Java接口:Inter(扩展可观察,不可能)

    Java类:ClassB实现可观察的内部扩展

    Java类:ClassC实现可观察的内部扩展

    现在ClassA的代码有点像这样。

    ClassA{
        Inter anyClass = new ClassB();
               //or it could be
        Inter anyClass = new ClassC();
        //Inter.addObserver(this); //not possible since Interface cannot extend Observable
    }
    

    现在,如果一个特定的事件发生在ClassB或ClassC中,我希望ClassA知道它。我想过使用观察者/可观察的,但问题是接口不能扩展可观察的。

    如果有人理解这个问题,请帮助我找到一种方法,在ClassB或ClassC中发生问题时更新ClassA。

  • 共有3个答案

    甄阳朔
    2023-03-14

    只需使用适当的addObserver和deleteObserver方法定义自己的接口IObservable:

    public interface IObservable {
        void addObserver(Observer o);    
        void deleteObserver(Observer o);    
    }
    

    您的接口可以扩展此IWatch able接口:

    public interface inter extends IObservable {
    ...
    }
    

    在类A和B中,addObserver和deleteObserver方法将从Observable类继承,不需要定义。

    public class A extends Observable implements inter {
    ...
    }
    
    孟自强
    2023-03-14

    通过条件3和条件4,我假设可观测是一个类,因为ClassB和ClassC正在扩展它。那么,你为什么不把add观察员方法放在可观察类中呢?然后,您可以将ClassB或ClassC实例分配给一个可观察的anyClass变量,并通过addObservermethod注册观察者:

    ClassA implements Observer {
        Observable anyClassB = new ClassB();
           //or it could be
        Observable anyClassC = new ClassC();
        anyClassB.addObserver(this);
        anyClassC.addObserver(this);
    }
    
    洪飞鸿
    2023-03-14

    您不必特别使用内置的Observer/Observable java实现。您可以创建自己的接口来使用观察者模式。

    使用“update”或“notify”(或类似的方法)创建一个接口观察者,该方法将用于ClassA

    然后,要使用“Inter”接口作为可观察对象,请确保它实现以下功能:

    - registerObserver(Observer)
    - unregisterObserver(Observer)
    - notifyObservers() //(or updateObservers(), which calls the update/notify method for all registered observers)
    

    确保实现“Inter”接口的类也有一个名为observerCollection的arraylist来跟踪观察者。然后,每当ClassB或ClassC中的某些内容发生变化,并且您想告诉ClassA(观察者),您可以调用notifyObservators()让它知道某些内容发生了变化。

    看一看,看看观察者设计模式会发生什么:http://en.wikipedia.org/wiki/File:Observer.svg

     类似资料:
    • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

    • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?

    • 问题内容: 我正在尝试了解观察者和可观察者。 这是我要弄清楚的一个示例: 该可制成只是因为延伸? 该观察者被添加到哪里?正在创建什么,在哪里创建? 和之间有什么区别? 我不明白这种方法。代表什么?为什么需要检查?为什么要更新另一个可观察的东西? 无论如何我为什么需要这个观察者? 问题答案: 是。是抽象类中的方法。请参阅Java文档中的Observable。 它已添加到中的列表中。 在设置之前,对的

    • 我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从

    • 导览 本小节主要介绍 Apache ShardingSphere 可观察性的相关功能 应用性能监控集成