使子类在java中可见
我有一个子类叫做Passenger,它是从Person类扩展而来的。我想让乘客舱成为一个可观察的物体。所以我是这样做的使子类在java中可见,java,observer-pattern,Java,Observer Pattern,我有一个子类叫做Passenger,它是从Person类扩展而来的。我想让乘客舱成为一个可观察的物体。所以我是这样做的 class Person extends Observable{ } class Passenger extends Person{ public void move(){ setChanged(); notifyObservers(); } } class Manager implements Observer
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类的可观察功能时,让Person类可观察是一种不好的做法吗?如果是这样的话,我该如何改变这一点呢?我认为java中的Obervable类是一个考虑不周的类。在我看来,它真的很想在界面上 然而,你可以在乘客层面上使用构图,而不是让人从可观察的角度进行延伸 在乘客舱内,您可以使用以下代码:
private Observable observable = new Observable();
public void addObserver(Observer o) {
observable.addObserver(o);
}
public void notifyObservers() {
observable.notifyObservers();
}
这是与可观察对象的组合关系。它应该工作得很好
有关此问题的更多信息:
您还可以将Person类作为一个接口,以便乘客类可以扩展Observable并实现Person。只是想一想。如果您需要将乘客从人扩展到人,那么您没有其他方法可以实现您正在做的事情;)如果你想“使乘客等级成为可观察的对象”,为什么不让
乘客
扩展可观察
呢?因为它需要扩展personI同意TangledUpInBlue(回答如下)。给人一个界面似乎是合理的。然后您可以创建两个抽象类;BasePerson和BaseObservicePerson根据需要进行扩展。