我目前正在为大学开发一款小游戏。我有一个扩展Observable的模型并实现了一个接口。
由于接口我必须每次为每个添加的Observer重写addObserver方法。并在界面中添加附加方法。到现在为止看起来像这样:
@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);
}
其中每个视图都是扩展的JPanel。由于我受限于特定的指标,其中也包括每个类的最大方法量,我喜欢将其减少到一个。或者根本不要覆盖addObserver方法。因为我以任何方式使用父方法。
但问题是:我真的不知道怎么回事。我能想到的只有一个解决方案就是使用泛型。但我对仿制药并不太熟悉。
感谢您的帮助!
答案 0 :(得分:3)
如果你的观点都扩展了JPanel,你可以这样做
@Override
public void addObserver(JPanel someView) {
super.addObserver((Observer) someView);
}
完全避免它的想法是在创建视图时将视图注册为观察者。看起来像这样:
public class TaskForceView extends JPanel implements Observer{
public TaskForceView(Observable observable){
...
observable.addObserver(this);
}
}
(我没有试过这个,它以某种方式对观察者模式起作用,因为它颠倒了它通常使用的方式)