sda*_*das 9 java model-view-controller
这个问题与MVC(模型 - 视图 - 控制器)有关.我的模型当前使用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.
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我的模型变得越来越复杂 - 它开始保持其他类的列表:
public class Model extends Observable {
List<Person> people = new ArrayList<Person>();
}
public class Person {
private String name = "";
// ... getter / setter for name
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:当一个人的名字发生变化时,我想更新一个包含该人的模型的视图.我能想到的唯一方法是让Model实现一个Observer类,让Person扩展一个Observable类.然后,当Person改变时,他会通知他的观察者(包括父模型).
然而,如果我的模型变得复杂,这似乎很多工作.是否有更好的方法可以对父模型进行"冒泡"更改?
首先,通常使用它是一个坏主意,Observable因为您需要扩展此类才能使用它。
无论如何,您所描述的是观察到的实体的聚合。
不要把简单的事情复杂化。让每个实体成为可观察对象,并让它负责注册和通知。您不必专门包含一个名为Model聚合所有内容的类。打破你的设计。
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |