首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MVC或MVP应用程序中创建视图和控制器的一些模式是什么?

在MVC或MVP应用程序中创建视图和控制器的一些模式是什么?
EN

Stack Overflow用户
提问于 2009-03-09 19:13:53
回答 1查看 262关注 0票数 0

我正在开发一个用于编辑文档的MVC/MVP GUI。该文档具有树结构,其中一些节点表示文本,另一些节点表示图像。app模型还包括一个命令栈,其中的命令直接在模型上操作。

由于不同的节点具有完全不同的控件,因此我计划为每个节点实现单独的MVC/MVP三元组。我遇到麻烦的地方是如何同步创建和销毁对等的V和C组件。

我的想法是:

  • 在每个节点上侦听"childAdded“类型的事件,然后基于这些事件创建对等体
  • 使用工厂在模型中创建节点,并让该工厂创建对等体

动态视图/控制器生成的一些常见模式或最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-09 19:41:33

我推荐在这个site上查看一些UI模式

至于你的具体问题,我会做以下几点

显示节点的表单将实现一个INodeView接口

INodeTreeForm接口的一种方法是能够添加单个节点。它将传递在NodeTreeScreen对象中创建的节点类。将有两个关键属性。第一个是节点的键,第二个是节点的类型。

您将以这样的方式添加节点,即在控件上有一个具有键的字段。

与INodeTreeForm接口一起,您将拥有一个INodeView接口。这将覆盖视图区域或您将切换的新窗体。

当您单击节点时,它会将关键字传递给NodeTreeScreen,后者会查看它是什么类型的节点。它有一个INodeView对象的集合。INodeView的属性之一是它是哪种类型的节点。

您检索到了正确的INodeView。您关闭当前的INodeview,将当前的INodeView设置为您检索到的节点,将节点传递给它,并告诉它确实会自动显示。

你可以选择INodeView将会做什么。您可以为每种不同的类型注册一个表单/控件。例如INodeViewText、INodeViewImage等,或者只有一个综合的INodeViewForm,让实现INodeView的对象来处理实际的绘图。

根据您的GUI工具包的不同,这可能意味着一个表单可以实现许多不同的接口。

至于添加、删除和创建节点,这将通过实现INodeTreeForm和NodeTreeScreen的表单之间的交互来完成。其中要做的事情是执行您已经创建的命令来修改模型。

通过实现接口背后的所有东西,您可以更改实现,而不会搞砸软件的其余部分。实现不同接口的对象可以在不影响其他对象的情况下进行更改,只要它们继续正确地实现接口即可。

这是Martin Fowler网站上被动视图的一个变体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/627625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档