我一直在关注 Oracle 在本文中提出的修改后的模型视图控制器示例。使用 MVC 的 Java SE 应用程序设计
在此示例中,DefaultController 类声明属性名称字符串,如下所示:
public static final String ELEMENT_TEXT_PROPERTY = "Text";
这些字符串在多个地方使用。
在控制器中:
AbstractController 使用反射在其模型中搜索名为 set+propertyName 的方法。
在模型中:
该模型具有调用此方法的 setter 方法:
firePropertyChange(Controller.NAME_PROPERTY, oldName, name);
在视图中:
在 modelPropertyChange 方法中,
if(evt.getPropertyName().equals(Controller.NAME_PROPERTY)
我关心的部分是模型引用了控制器的静态字段。我仍在尝试掌握 MVC,但我不确定此架构是否实现了 MVC 用于所需的解耦。所有三个类都引用控制器的静态字段是否重要?
编辑: 本教程中描述的架构(如编码)是否是 MVC 的无效表示?如果是这样,是否可以对其进行更改,以使模型/(模型层)不依赖于 DefaultController 类中定义的静态属性名称?
我意识到这篇文章“只是一个教程”,但是如果其中提供的代码没有反映所声称的解耦,我认为社区应该停止将它作为 MVC 的示例来引用。