Java 如何使用MVC设计模式观察嵌套对象
我试图使用MVC设计模式来观察模型类中的对象。例如,模型类表示具有x个楼层且每个楼层都有门的建筑,您将如何观察位于楼层对象内部的门。视图对象如何到达门对象以将自己注册为观察者?也许您想要的是观察者模式: 该模式有一个观察者对象,用于侦听事件并在事件发生时通知所有侦听器。您可以将建筑设置为观察者,并检查门中的修改,当某些内容发生更改时,您可以通知所有侦听器。现在,您的建筑是一个观察者,视图可以注册为侦听器。 下面是一个简单的代码示例: 以下是充当观察者的建筑类:Java 如何使用MVC设计模式观察嵌套对象,java,model-view-controller,design-patterns,Java,Model View Controller,Design Patterns,我试图使用MVC设计模式来观察模型类中的对象。例如,模型类表示具有x个楼层且每个楼层都有门的建筑,您将如何观察位于楼层对象内部的门。视图对象如何到达门对象以将自己注册为观察者?也许您想要的是观察者模式: 该模式有一个观察者对象,用于侦听事件并在事件发生时通知所有侦听器。您可以将建筑设置为观察者,并检查门中的修改,当某些内容发生更改时,您可以通知所有侦听器。现在,您的建筑是一个观察者,视图可以注册为侦听器。 下面是一个简单的代码示例: 以下是充当观察者的建筑类: class Building {
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);
}
}
感谢您的回复,所以建筑(模型)将在每层的每个门上使用观察者模式?这仍然是有效的MVC模式吗?您可以混合设计模式来增加功能。您的控制器将作为观察者,观察门上的事件,以通知听众。仍然是有效的MVC模式,因为您使用视图进行渲染,使用控制器处理业务逻辑,使用模型处理数据管理和持久性。
class View implements Listener {
public View(Building building){
building.addListener(this);
}
void handleDoor(Door door){
//do some stuff...
}
}