我正在尝试为我的动画 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/