java - 观察者的构造函数是否需要 Observable 作为参数?

标签 java design-patterns observable observer-pattern

我正在尝试为我的动画 GUI 实现一个观察者。

因此,如果发布了动漫剧集,则通知其他观察者更新该特定动漫的剧集状态。

而且它有效。

我的问题:

我正在尝试理解观察者模式,我想知道是否必须向观察者的构造函数提供 Observable 作为参数。

因为我在一些教程和网站上看到过它,所以我有点困惑。

最诚挚的问候

你的乔治

最佳答案

它不一定需要在创建时了解 observable。

可以这样实现(简单的例子,当然不完美)

class MyObservable {

    private ArrayList<MyObserver> observersList = new ArrayList<>();

    public void addObserver(MyObserver observer) {
        observersList.add(observer)
        // OR observer.addObservable(this) , but it is kinda strange one
    }

    public void onAnimeReleased() {
        // Some other logic, release Anime and etc...
        notify();
    } 

    private void notify() {
        observersList.forEach((obs) -> obs.notify());
    }
}

请注意,您还可以保存对不在集合中的观察者的引用。

private MyObserver animeObserver;

总而言之,通常实现此模式意味着您需要实现一种将观察者添加到 observable 并在需要时通知它们的方法。

关于java - 观察者的构造函数是否需要 Observable 作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59660091/

相关文章:

Angular2 rxjs 按可观察字段对对象列表进行排序(可观察)

swift - 加载大量项目时的尾递归

Java:派生类中的方法链

java - 什么是单例,用简单的英语?

C++ 或 D : idiom to decouple classes without dynamic dispatch?

asp.net-mvc - 服务层是否应该可以访问 HttpContext?

javascript - Angular 等待所有订阅完成

Java 写入文件。使用循环

javascript - 为基于 Web 的应用程序禁用多用户登录

java - Spring - 如何控制为 View 显示的 URL?