1
6
如果我是你,我会从你视图的一个界面上公开事件。这将允许您使控制器成为整个交互的中心。 控制器将首先加载并实例化视图,我将使用依赖项注入,这样您就不会在视图本身上创建依赖项,而是只在接口上创建依赖项。 控制器将访问模型并将数据加载到视图中。 控制器将绑定到视图接口上定义的事件。 然后,控制器将通过一个事件处理数据保存回模型。 如果您愿意的话,还可以使用事件代理,这样就不需要为每个视图声明接口。这样就可以通过属性绑定到事件。 这将使控制器依赖于模型和视图接口,视图仅依赖于数据,而模型不依赖于数据。 上述设计思想的一些例子可以在cab和智能客户端软件工厂中找到。 Link To Smart Client . 他们使用MVP模式,但它同样可以很容易地应用到MVC模式。 |
2
3
大多数图形用户界面框架(从mfc到swt到任何东西)都已经是基于mvc的。实际上,MVC模式最初是由smalltalk-80创建的,后来才真正用于GUI开发。 仔细检查并查看所选GUI工具包的标准和建议实践。有时,在解决某个问题或使用特定的工具箱时,MVC不是一个好的模式。 记住:MVC是一个很好的模式,但不是一个一刀切的解决方案,当基于事件或函数式编程将使您的生活更容易时,不要试图将问题强制引入MVC。 |
3
1
想象一下这个图形用户界面: Zergling单元以外星图标的形式呈现给用户。您可以看到它在其空闲动画中。称之为视图。 玩家通过点击该单元和目标位置来移动该单元。如果你想的话,你可以给玩家加字幕。把这个叫做控制器。 单位在战斗中的每一个游戏帧计算单位的生命值和攻击范围。您可以更改此数据,使Zergling成为一个范围单位。称之为模型。 请记住这个类比,并将其扩展到您的MVC设计中。 |
4
1
您需要记住的一点是,在MVC设置中,控制器必须知道要调用哪个视图,但视图必须不知道控制器的任何内容。 因此,您的视图必须为控制器提供一种通用的交互方式,这样您就可以让几个不同的控制器调用同一视图(例如,一些数据的标准化图形输出作为参数提供)。 这为您提供了灵活性:
如果你让你的视图与特定的控制器分离,并且让你知道从控制器调用哪个视图,你就可以很好的进行了。 |
5
0
您的控制器应该定义绑定到视图实现的接口上定义的事件。 你怎么做可能是个棘手的问题。依赖注入?风景工厂?让视图实例化它想要的控制器吗?这实际上取决于应用程序的复杂程度。 对于一些非常快速和简单的东西,我将从让每个视图构建它的控制器开始,然后查看其他选项(如果需要的话),以使其更大。就我个人而言,我认为一个完整的依赖注入框架对于六个表单来说是多余的:] |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |