问题标签 [presentation-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android 的演示模型:如何将模型包装在演示模型中?
我正在尝试使用 PM 设计(MVC + 演示模型)制作我的应用程序,但我已经坚持如何巧妙地将模型类包装在演示模型类中。现在,我编写了一个简单的代码,其中根据 Model 类实例中的值更改图片和文本。
枚举
MVC + RM
MVC 的 RM + RM
MVC 的 VC + RM
我的问题:如何在public void update()
课堂上编写逻辑PresentationModel
?我只能从中得到一个Object
变量NotifyObserver()
,即使是嵌套的switch
or if
... else
,我也根本想不出代码...
architecture - 驱动复杂用例的架构
我即将设计一个由多个开发人员实施的软件。
该软件有许多复杂的用例,涉及来自 UI 的几个步骤和命令。我希望与 UI 和业务逻辑有一个明确的分离,因此,每个用例的不同状态不应由 UI 驱动/控制,而是在较低层中,使 UI 本质上是“愚蠢的”。
我考虑过混合 DCI 和状态模式来解决这个问题。
我想知道您对类似应用程序的体验,如果可能,请接受您的建议。
谢谢!
apache-flex - Flex 演示模型:视图中是否应该保留状态?
我有两个视图实例,它们是 V1a 和 V1b。由于它们是相同类型的实例,它们都使用相同的表示模型 (PM1) 实例,因为它作为单例注入到每个实例中。每个视图显示不同的状态(V1a 的 S1a 和 V1b 的 S1b)但是在这两个视图之间切换(例如当它们在 TabNavigator 中时)会产生奇怪的结果:
- 用户查看V1a并看到S1a中的状态;
- 用户查看 V1b 并看到 S1b 的状态;
- 用户再次查看V1a,但这次看到的是S1b的状态。
这是因为 S1b 覆盖了 PM1 单例中的状态,因此当重新打开 V1a 时,视图会显示来自 V1b 的状态。我有三个解决方案:
- 不要注入单例!但这似乎是最常见的方式;
- 当用户切换视图时,它会将其数据重新注入 PM1。在顶层具有状态并需要将其注入底层的分层视图中,这可能会变得复杂。绑定需要更加小心;
- 保持视图中的状态,并在视图要采取行动时将其传递给 PM。
解决方案 3 似乎是最简单的。然而,我所读到的关于演示模型的所有内容都倾向于表明状态保存在演示模型中。谁能告诉我哪里出错了?据我所知,在视图中保存状态比在表示模型中要容易和安全得多。
user-interface - 表示模型和 MVVM 的区别
我正在阅读这两种架构。但我无法区分两者。在 PM 中,presenter 丰富了模型数据,视图包含控制器(MVC 控制器)逻辑,这与 MVVM 的情况相同。
我读过很多文章,每一篇都给出了定义,但没有描述它们之间的区别。
design-patterns - 演示模型与被动视图
我想知道这两种模式之间的区别。当您考虑时,您需要演示模型模式中的同步代码并且该代码在演示模型本身中,那么我认为这些模式非常相似。
两者都将事件委托给演示模型/演示者。演示模型和演示者命令域模型并且也观察域模型。在发生更改时,它们都与视图同步(因为表示模型中的同步代码在表示模型中)。
在我看来,不同之处在于,表示模型是视图的抽象形式。它描述了视图的状态和行为。因此它具有所有视图状态信息的属性。并且此信息通过同步代码同步。在被动视图中,演示者不一定被视为视图的抽象形式。因此演示者不一定具有表示视图状态的属性。所以演示者不会“同步”状态(控件的属性和演示者本身)。相反,他只是将域数据“复制”(更改)到控件。所以区别本质上是视图的抽象,表示模型提供,而在被动视图中,演示者可以被视为域数据的数据映射器。
到目前为止还可以吗?还是我错过了一些重要的事情?
谢谢和最好的问候帕特里克
java - Java Swing 和演示模型
我正在用 Java 开发一个应用程序,并且我正在使用 Swing 作为 GUI。我打算使用 Martin Fowler 在这里介绍的演示模型模式:http ://martinfowler.com/eaaDev/PresentationModel.html
但我真的不喜欢在我的 Presentation Model 类中处理 View ,所以我发现我可以用不同的方式来做。
在我的方法中,我将有一个 CustomViewModel 类扩展 Swing 组件模型(如 JTable 的 TableModel 或 JButton 的 ButtonModel)。此类将覆盖用户更新模型数据时执行的方法。所以我会做我的工作,比如更新 DomainModel 然后调用 parents 方法。这样,我将始终在 DomainModel 和 ViewModel 之间保持数据同步。
例如:
在设置 gui 功能中,我将拥有:
所以现在在我的控制器功能中,我可以拥有:
就是这样,MyCustomTableModel 已经覆盖了 JTable 用来更新其内容的方法,并且在实际调用父母 setModel 之前让我的代码更新实际模型。无需查看参考。问题是当我需要处理与其他组件没有相似关系的 JFileChooser 时。我说的是一些 ViewModel 类。
有谁知道如何解决这种方法。
我想要实现的不是在 MyCustomComponentModel 和 Controller 中都引用 View。我想通过一组CustomComponentModel在控制器和视图之间进行通信,它扩展了TableModel、ButtonModel等视图模型。这样做的目的是更容易TDD。在这种方法中,仅未测试事物的布局。
design-patterns - 将 Presentation Model 与复杂的自定义控件(有自己的模型)一起使用
我有一个使用Martin Fowler 的演示模型和 WinForms 的应用程序(WPF 会是更好的选择,但这无关紧要)。因此,每个视图都有一个表示模型,表示它位于 UI 逻辑和域模型转换逻辑所在的位置。当我的视图中的控件是内置的 .NET WinForms 控件或第三方控件时,这非常有效。
在订阅DRY主体时,我的应用程序使用了一个类库,它提供了一组我自己的自定义控件,这些控件在我的应用程序的多个视图中使用;这些控件中的每一个都是具有某种功能关系的较小控件的组合。自定义控件也有它们自己的表示模型来控制它们的 UI 逻辑。
我的问题是,我如何构建我的应用程序,以便视图的关注点不与我的自定义控件的底层 UI 逻辑相关联? 这是一个图表:
我不希望从表单的表示模型到控件的表示模型的信息流必须通过视图本身;但与此同时,演示模型不知道(也不应该知道)彼此。
android - 数据绑定:表示模型和视图,Android 中的第 3 方库
我很快意识到这将成为具有大量样板文件的 Android 中的一个问题,当我开始重构我的代码时,我现在正在有效地编写我自己的 half-@ssed 版本的数据绑定。我不想花更多时间概括它并重新发明轮子。我想知道是否有任何好的解决方案作为社区使用的 3rd 方库。
我发现了 robo-bindings,我真的很喜欢他们的演示文稿(专注于对他们自己的东西进行单元测试、健壮性等),但它们似乎仍然很小,我担心他们的库和一般支持/发展的问题向前。
人们正在使用任何其他图书馆吗?
谢谢。
design-patterns - 演示模型与 MVP(被动视图)
我正在尝试学习演示模型模式,在我的尝试中,我对演示模型和 MVP - 被动视图的区别感到困惑。特别是当 Presentation Model 进行同步而不是 View 时。这个问题是对之前关于这个问题的问题的扩展。
Martin Fowler 在他的文章中提供了演示模型进行同步的可能性。
引用视图的表示模型通常在表示模型中维护同步代码。由此产生的观点非常愚蠢。该视图包含任何动态状态的设置器,并引发事件以响应用户操作。视图实现了允许在测试表示模型时轻松存根的接口。Presentation Model 将观察视图并通过更改任何适当的状态并重新加载整个视图来响应事件。因此,无需实际的 UI 类即可轻松测试同步代码。
如果演示模型正在同步,我不完全理解它与 MVP(被动视图)有何不同。他关于 Passive View 的文章展示了一个使用同步来更新视图的示例。
那么表示模型引用视图(和同步)的表示模型模式是否与 MVP(被动视图)相同?