在java中创建子类可观察

时间:2015-12-03 13:51:57

标签: java observer-pattern

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

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) {
    }  
}

当我不需要为该类提供可观察的功能时,将Person类设为Observable是不好的做法?如果是这样,我怎么能改变这个?

2 个答案:

答案 0 :(得分:4)

我认为java中的 Obervable 类是一个相当糟糕的课程。在我看来,它真的想要在界面中。

然而,不是让人从Observable扩展,你可以使用乘客级别的组合。

在您的Passenger课程中,您可以使用以下代码:

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?

答案 1 :(得分:0)

您也可以将Person类作为接口,因此Passenger类可以扩展Observable并实现Person。只是一个想法。