Java-如何避免每次重写AddObservable?
我目前正在为大学制作一个小游戏。我有一个扩展Observable并实现接口的模型 由于接口的原因,我必须每次为我添加的每个观察者重写addObserver方法。并将additional方法添加到接口中。现在看起来是这样的:Java-如何避免每次重写AddObservable?,java,swing,generics,observer-pattern,Java,Swing,Generics,Observer Pattern,我目前正在为大学制作一个小游戏。我有一个扩展Observable并实现接口的模型 由于接口的原因,我必须每次为我添加的每个观察者重写addObserver方法。并将additional方法添加到接口中。现在看起来是这样的: @Override public void addObserver(UniversityView universityView) { super.addObserver(universityView); } @Override public void addObse
@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);
}
public class TaskForceView extends JPanel implements Observer{
public TaskForceView(Observable observable){
...
observable.addObserver(this);
}
}
其中每个视图都是一个扩展的JPanel。由于我必须遵守特定的指标,其中也包括每个类的最大方法数量,所以我喜欢将其减少到一个。或者完全避免重写addObserver方法。因为我正在以任何方式使用父方法
但问题是:我真的不知道怎么做。我能想到的唯一解决办法就是使用泛型。但我对泛型不太熟悉
谢谢你的帮助 如果您的视图都扩展了JPanel,您可以这样做
@Override
public void addObserver(JPanel someView) {
super.addObserver((Observer) someView);
}
完全避免这种情况的一个想法是在创建视图时将视图注册为观察者。看起来像这样:
@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);
}
public class TaskForceView extends JPanel implements Observer{
public TaskForceView(Observable observable){
...
observable.addObserver(this);
}
}
(我没有尝试过这个方法,但它在某种程度上与观察者模式相反,因为它颠倒了通常使用的方式)嘿,这对我来说是一个简单的方法,甚至可以让我思考它。在你的解决方案中,我要做的唯一一件事就是向观察家发表一些看法。类似super.addObserver((Observer)面板)的东西;我不想把你的答案标记为解决方法,因为我也很感兴趣,如果有办法避免这种方法的话。非常感谢!事实上,一个需要投给观察者的人,从我身边走过。我想我开始依赖IDE对我大喊大叫。增加了另一种可能性。这里提到了一些observer模式的替代实现。