java - 如何使用 MVC 设计模式观察嵌套对象

标签 java model-view-controller design-patterns

我正在尝试使用 MVC 设计模式来观察模型类中的对象。例如,模型类代表一栋有 x 层楼的建筑物,每层都有一扇门,您将如何观察地板对象内部的门。 View 对象如何到达门对象以将自己注册为观察者?

最佳答案

也许你想要的是观察者模式:

enter image description here

该模式有一个观察者对象,用于监听事件并在事件发生时通知所有监听器。您可以让您的建筑物成为观察者并检查门的修改,当发生变化时您可以通知所有听众。现在您的建筑物是观察者, View 可以注册为监听器。 这是一个简单的代码示例:

这是充当观察者的构建类:

class Building {

    List<Observers> listeners = new ArrayList<>();

    public void checkDoors(){
        //check for variations...
        if(variation) notifyListeners(); //iterate over all observers and notify them
    }


    public void addListener(Listener listener){
        listeners.add(listener);
    }
}

这是监听门上通知的 View :

class View implements Listener {

    public View(Building building){

        building.addListener(this);
    }

    void handleDoor(Door door){
        //do some stuff...
    }
}

关于java - 如何使用 MVC 设计模式观察嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59348565/

相关文章:

c# - 设计模式,以便在调用静态方法之前始终调用静态 init 方法

java - 为什么我的文本区域不显示

java - 有一个 ObjectFactory 接口(interface)和实现它的类是好的设计吗

php - "Cannot add or update a child row: a foreign key constraint fails"与 Zend Framework 1 和 MySQL

javascript - 主干.集合.创建

java - 如何在初始化复杂java对象时初始化它的所有子非原始字段?

java - 在 hibernate 状态下删除多个关系

java - Eclipse 如何查看 Java 文件而不是类文件

ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗?

design-patterns - 这是什么设计模式?