使用模型来表示视图的整体状态

Posted

技术标签:

【中文标题】使用模型来表示视图的整体状态【英文标题】:Using a model to represent the overall state of a view 【发布时间】:2011-07-04 16:54:20 【问题描述】:

是否有表示未链接到单个组件的用户界面状态的标准做法?

例如,Swing 界面可能有一系列选项卡,其约束是每个给定实体类型(这可以表示为 HashSet)一个选项卡只能显示一次。或者一条消息可以给出最后执行的操作的结果。或者,可以将 JPanel 链接到单个实体实例以进行编辑。

【问题讨论】:

不确定你的意思? 简而言之,我想知道视图是否可以/应该有自己的模型。 【参考方案1】:

我认为您所描述的是模型-视图-视图模型模式。这在 dot-net 领域风靡一时。 mvvm 的顶部 Google 链接也是 MSDN article,提供了相当不错的概述。

【讨论】:

【参考方案2】:

是的,为视图本身创建模型是完全可以接受的,它与应用程序模型完全分离。 Swing 已经在内部这样做了,跟踪元素的布局方式、表格中的行和列以及文本字段中的光标位置。

我建议让您的视图模型逻辑尽可能与实际组件代码松散耦合,以使其更易于维护,例如为不扩展实际 Swing 对象的每个职责或行为创建一个单独的类。

例如,如果我们想确保只有一个特定类型的 JFrame 实例,例如选项对话框甚至主应用程序窗口,则可以使用单例样式的类来完成,该类持有对框架的引用并在有人调用您的方法时返回它,如果它不存在则创建它,如果它隐藏则使其可见。这很常见。

【讨论】:

以上是关于使用模型来表示视图的整体状态的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 模型/视图中修改数据表示

MVVM 架构与数据绑定库

在视图模型中更改模型状态(添加自定义验证)

将子视图定位在圆形视图的边缘

MODEL-View-Controller,既模型-视图-控制器

架构师成长日记 - 01 4+1视图模型