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

时间:2014-06-02 18:26:16

标签: java swing generics observer-pattern

我目前正在为大学开发一款小游戏。我有一个扩展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方法。因为我以任何方式使用父方法。

但问题是:我真的不知道怎么回事。我能想到的只有一个解决方案就是使用泛型。但我对仿制药并不太熟悉。

感谢您的帮助!

1 个答案:

答案 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);
     }
}

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