在 java 中使子类可观察

Making a subclass observable in java

我有一个名为 Passenger 的子class,它是从一个人 class 扩展而来的。我想让 Passenger class 成为一个可观察的对象。所以我是这样做的,

class Person extends Observable{    
}

class Passenger extends Person{
    public void move(){
        setChanged();
        notifyObservers();
    }   
}

class Manager implements Observer{
    @Override
    public void update(Observable o, Object arg) {
    }  
}

当我不需要 class 的可观察功能时,让 Person class 可观察是一种不好的做法吗?如果可以,我该如何更改?

我认为 java 中的 Obervable class 是一个考虑不周的 class。在我看来它真的很想出现在界面中。

然而,除了让 Person 从 Observable 扩展之外,您还可以在 Passenger 级别使用组合。

在您的 Passenger class 中,您可以使用如下代码:

private Observable observable = new Observable();

public void addObserver(Observer o) {
    observable.addObserver(o);
}

public void notifyObservers() {
    observable.notifyObservers();
}

这是与可观察对象的组合关系。它应该工作得很好。

有关此问题的更多信息:

Why is java.util.Observable not an abstract class?

您还可以使 Person class 成为一个接口,这样 Passenger class 就可以扩展 Observable 并实现 Person。只是一个想法。