这个问题与 MVC(模型- View - Controller )有关。我的模型当前使用 Java 中的 Observer/Observable 模式更新我的 View :
public class Model extends Observable {
}
public class View implements Observer {
@Override
public void update(observable o, Object obj) {
// ... update the view using the model.
}
}
这很好用。但是,我的模型变得越来越复杂 - 它开始包含其他类的列表:
public class Model extends Observable {
List<Person> people = new ArrayList<Person>();
}
public class Person {
private String name = "";
// ... getter / setter for name
}
我的问题是:当一个人的名字改变时,我想更新监听包含那个人的模型的 View 。我能想到的唯一方法是让 Model 实现一个 Observer 类并让 Person 扩展一个 Observable 类。然后,当 Person 发生变化时,他会通知他的观察者(包括父模型)。
但是,如果我的模型变得复杂,这似乎需要大量工作。有没有更好的方法来“冒泡”对父模型的更改?
最佳答案
首先,通常使用Observable
不是一个好主意,因为您需要扩展此类才能使用它。
无论如何,您所描述的是观察到的实体的集合。
不要把简单的事情复杂化。使每个实体成为可观察的,并让它负责注册和通知。您不必专门包含一个名为Model
的类来聚合所有内容。打破你的设计。
关于java - 在 Java 中同时使用 Observer 和 Observable 的模型设计不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222954/