java - 在 Java 中同时使用 Observer 和 Observable 的模型设计不好吗?

标签 java model-view-controller

这个问题与 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/

相关文章:

javascript - 如何在目录中设置 ember Controller ?

actionscript-3 - 多个 View 状态的设计模式?

C++ Qt : QStyledItemDelegate's createEditor is never called, 尽管调用了 paint()

java - 我可以在 Java 属性文件中的多行属性之间或之后放置注释吗?

java - 1582年10月15日之前的日历到日期的转换。公历到儒略历的切换

java - 测试类/接口(interface)实现哪些接口(interface)?

php - 在基本 PHP MVC 中返回 Ajax 请求的 json 响应

asp.net-mvc - 模型后面/旁边的代码 (.cs-aspx.cs-aspx) VS MVC 模型,到底有什么区别?

java - 接受任意次数的输入

java - 如何摆脱 "Class path contains multiple SLF4J bindings"警告?