我正在编写一个Swing应用程序,并且进一步解决了,已经决定使用Model-View-
Presenter
模式将用户界面与业务逻辑分开。
当我的应用程序启动时,它将执行以下代码:
Model model = new BasicModel();
Presenter presenter = new Presenter(model);
View view = new SwingView(presenter);
presenter.setView(view);
presenter.init();
创建用户界面。事件由生成View
,并委托给Presenter
。在Presenter
随后操纵Model
和更新View
相应。
为了处理一些事件,我需要从用户那里获得更多信息。对于这些事件,我认为使用Swing视图生成新JDialog
窗口是合适的。
一种思路使我觉得这可能是原始代码中的适当代码Presenter
:
public void handlePreferences() {
Preferences prefs = view.getPreferences();
model.setPreferences(prefs);
}
也就是说,每个内容JDialog
都应代表一个不同的对象,该对象应从中检索View
并在中更新Model
。但是,这留下了问题:我是否要创建一个新Model
的Preferences
对象来表示该对象,并创建一个新Presenter
的事件处理对象JDialog
?
在我看来,例如,创建一个新的Presenter
和Model
原始的内部文件会View
迫使我去做很多工作,如果要更改UI以使用JSF,这些工作将很难移植。
请随时添加评论以进行澄清。
尽管拥有“嵌套”设计模式并不罕见,但在您的情况下却没有必要。借鉴其他答案:
模型
-包含所有真实数据,变量,对象
-知道如何将其存储的数据值设置为新值
-响应订单(方法调用)
-具有方法setPreferences(value1,value2,value3 …);
视图
-是应用程序的IO,仅是输出和输入
-它只能按自身状态运行
-维护局部变量和对象,例如。它具有JButtons,JMenus和int计数器…-
知道如何通知Presenter状态更改
-它的状态对Presenter可见,或通过方法调用显示
-响应命令(方法调用)
-知道如何获取用户的首选项
-具有方法askForPrefs();
-具有方法getPrefState();
Presenter-
响应状态更改
-做出所有决定,告诉其他对象该怎么做(而不是怎么做)
-知道何时需要首选项
-知道从何处获取新首选项以及将其放置在哪里
-具有方法newPrefsAvailable( );
…以从用户那里获得更多信息。对于这些事件,我认为使用Swing视图生成一个新的JDialog窗口是合适的。
Presenter-检查模型,确定需要新的首选项 Presenter-this.myView.askForPrefs(); //告诉视图向用户询问优选值
View.askForPrefs-弹出一个JDialog框,将retVals作为状态更改存储在视图中 View-this.myPresenter.newPrefsAvailable();
演示者-使用this.myModel.setPreferences(this.myView.getPrefState())进行响应;
Model.setPreferences-将存储的值更改为View.getPrefState() Presenter-检查模型-确定首选项是否良好
Presenter-继续
JDialog被视为View的扩展,就像JButton一样,它是View的成员。该模型具有权威的实际首选项值,并且视图具有表示JDialog状态的局部变量。
一、MVP概述 MVP,全称 Model-View-Presenter,即模型-视图-层现器。 提到MVP,就必须要先介绍一下它的前辈MVC,因为MVP正是基于MVC的基础发展而来的。两个之间的关系也是源远流长。 MVC,全称Model-View-Controller,即模型-视图-控制器。 具体如下: View:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Acti
我有一个系统(游戏),我尝试使用架构模型视图呈现器来实现它。我现在所做的是演示者中的while循环,它不断调用视图方法来显示。我这样做的方式是使用Producer/Consumer模式,其中View为触摸事件(Android)注册和事件处理程序,并生成相应的触摸实例,演示者在while循环中使用。 现在我想在模型和演示者之间使用模式观察者/Suscriber。使用这个模式,演示者将是观察者订阅模型
问题内容: 使用标签将SVG直接包含在文档中时,您可以通过文档的样式表将CSS样式应用于SVG。但是,我试图将一种样式应用于嵌入的SVG(使用标签)。 是否可以使用以下代码? 问题答案: 简短的答案:不,因为样式不适用于文档边界。 但是,由于有标签,因此可以使用脚本将样式表插入svg文档。 这样的事情,并请注意,此代码假定已完全加载: 也可以插入一个元素来引用外部样式表: 另一个选择是使用第一种方
我试图创建一个从扩展而来的自定义视图,并在代码中应用样式,这样我就不需要在xml中这样做。 风格是: 一切正常,但property。由于某种原因,背景色并没有改变,它有主题的原色。但是,如果我尝试将样式应用于xml中的,它确实会改变颜色。 你知道为什么会这样,或者我怎样才能做到吗?
本文向大家介绍说说你对MVC、MVP、MVVM模式的理解相关面试题,主要包含被问及说说你对MVC、MVP、MVVM模式的理解时的应答技巧和注意事项,需要的朋友参考一下 ickt-5: https://www.cnblogs.com/keitsi/p/5764785.html
模型-视图-展示器(MVP)是MVC设计模式的一个衍生模式,它专注于提升展现逻辑.它来自于上个世纪九十年代早期的一个叫做Taligent的公司,当时他们正工作于一个基于C++ CommonPoint环境的模型.而MVC和MVP的目标都直指对整个多组件关注点的分离,它们之间有一些基础上的不同。 为了要做出总结的目的,我们将专注于最适合于基于Web架构的MVP版本。 模型,视图&展示器 MVP中的P代