gpt4 book ai didi

Java - 如何避免每次都覆盖 addObserver Observable?

转载 作者:行者123 更新时间:2023-11-29 05:22:48 25 4
gpt4 key购买 nike

我目前正在为大学开发一款小游戏。我有一个扩展 Observable 并实现接口(interface)的模型。

由于接口(interface)的原因,我每次都必须为我添加的每个观察者重写 addObserver 方法。并将附加方法添加到接口(interface)中。现在它看起来像这样:

@Override
public void addObserver(UniversityView universityView) {
super.addObserver(universityView);

}
@Override
public void addObserver(CourseView courseView) {
super.addObserver(courseView);

}
@Override
public void addObserver(TaskForceView taskForceView) {
super.addObserver( taskForceView);
}

其中每个 View 都是一个扩展的 JPanel。由于我受特定指标的约束,其中还包括每个类的最大方法数量,因此我想将其减少到一个。或者完全避免覆盖 addObserver 方法。因为我以任何方式使用父方法。

但问题是:我真的不知道该怎么做。我能想到的唯一解决方案是使用泛型。但是我对泛型不是很熟悉。

感谢您的帮助!

最佳答案

如果您的 View 都扩展了 JPanel,您可以这样做

@Override
public void addObserver(JPanel someView) {
super.addObserver((Observer) someView);
}

完全避免它的一个想法是在创建 View 时将您的 View 注册为观察者。看起来像这样:

public class TaskForceView extends JPanel implements Observer{
public TaskForceView(Observable observable){
...
observable.addObserver(this);
}
}

(我没有尝试过这个,它以某种方式违反了观察者模式,因为它颠倒了通常使用的方式)

关于Java - 如何避免每次都覆盖 addObserver Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com