首页 > 解决方案 > 如何使用 MVC 设计模式观察嵌套对象

问题描述

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

标签: javamodel-view-controllerdesign-patterns

解决方案


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

在此处输入图像描述

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

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

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);
    }
}

这是监听门上通知的视图:

class View implements Listener {

    public View(Building building){

        building.addListener(this);
    }

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

推荐阅读