java - 如何使用 MVC 设计模式观察嵌套对象
问题描述
我正在尝试使用 MVC 设计模式来观察模型类中的对象。例如,模型类表示具有 x 个楼层的建筑物,并且每个楼层都有一扇门,您将如何观察楼层对象内部的门。视图对象如何到达门对象以将自己注册为观察者?
解决方案
也许你想要的是观察者模式:
该模式有一个观察者对象,它监听事件并在事件发生时通知所有监听者。您可以使您的建筑物成为观察者并检查门中的修改,当发生变化时,您可以通知所有听众。现在您的建筑物是一个观察者,视图可以注册为一个监听器。这是一个简单的代码示例:
这是充当观察者的建筑类:
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...
}
}
推荐阅读
- python - 如果换行符以数字开头,则拆分 python 字符串
- java - 如何在 Java 中的索引位置找到元素?
- http - Tcl http POST - 通过 rPi 上的 wlan0 发送时,有效负载与标头分离
- python - 如何从字典中制作加权图?
- abp - ABP 4.0 Blazor - 覆盖身份视图
- python - 赋值前引用的局部变量 | matplotlib
- angular - NestJS 服务器上的 Angular PWA 在新部署后崩溃
- python - 'float' 对象没有属性 'round'
- docker - Kaniko 中构建的容器目录权限不好,但在 Docker Desktop 中构建时可以工作
- api - 盈透证券API投资数量