C# 什么是把握';什么事?
Grass控制器模式背后的理念是什么 我目前的解释是,有时候你想要实现一些需要使用几个类的东西,但是这些类中没有一个可以或者没有访问完成这项工作所需的信息,因此你创建了一个新的类来完成这项工作,它引用了所有需要的类(这就是,可能是信息专家) 这是关于Grass控制器的正确观点吗 一般来说,当我在谷歌上搜索控制器时,我只会得到有关MVC(以及其他)的结果,这些都是我不了解的主题,所以我希望得到的答案不会假设我知道ASP.NET的MVC或其他东西:( 感谢根据: 控制器对象是负责接收或处理系统事件的非用户界面对象 发件人: UI层之外的第一个对象首先接收并协调(“控制”)系统操作是什么 控制器,无论是MVC还是GRAP,都是关于接收输入和响应事件的 我从字面上对它进行了概念化:想象一个视频游戏控制器 它响应输入事件——用户按下按钮。当你按下按钮时,它不一定知道该做什么,但它至少接收到事件 看看控制器,我们可以很容易地找出系统事件是什么——也就是说它响应什么输入以及用户如何与系统交互。在任天堂控制器上,很明显系统事件是:C# 什么是把握';什么事?,c#,java,design-patterns,controller,grasp,C#,Java,Design Patterns,Controller,Grasp,Grass控制器模式背后的理念是什么 我目前的解释是,有时候你想要实现一些需要使用几个类的东西,但是这些类中没有一个可以或者没有访问完成这项工作所需的信息,因此你创建了一个新的类来完成这项工作,它引用了所有需要的类(这就是,可能是信息专家) 这是关于Grass控制器的正确观点吗 一般来说,当我在谷歌上搜索控制器时,我只会得到有关MVC(以及其他)的结果,这些都是我不了解的主题,所以我希望得到的答案不会假设我知道ASP.NET的MVC或其他东西:( 感谢根据: 控制器对象是负责接收或处理系统事件的
- 按
A
- 按
B
- 按
X
- 按
Y
- 按
↑代码>
- 按
↓代码>
- 按
→代码>
- 按
←代码>
- 按
L
- 按
R
← ← B
触发您的一个特殊动作。在这种情况下,系统可能需要不同的控制器来处理这些不同类型的事件:
这里,NES按钮控制器是一个MVC控制器,它可以跟踪UI元素的状态,例如,记住按什么顺序按下了哪些按钮。这取决于应用程序的状态(请参阅-另一个!)NES按钮控制器
将通过调用其他控制器(例如Scorpion控制器
)上的方法来响应某些按钮组合,这些控制器是用例控制器
重要的是,通过查看这些控制器对象的设计,您可以快速轻松地枚举它们响应的系统事件
总之,MVC控制器最终还是一种GRAP控制器——因为它的方法倾向于表示系统事件,这些事件响应用户输入。但是还有其他GRAP控制器不是MVC控制器:用例控制器。GRAP用例控制器可能响应系统事件,例如“用户创建新的销售”MVC控制器将响应诸如“系统接收到
/sales/new
的PUT请求”或“ajava.awt.event.ActionEvent
激发”之类的事件。模型包含数据。视图显示数据
视图侦听模型,使用四人组侦听器模式
控制器决定如何处理用户输入。它们可以调用模型上的方法、在当前模型集中构造新对象、从当前模型集中删除对象、将视图重新连接到不同的模型、添加视图、删除视图或重新配置视图
GRASP只是一个更好地理解软件的工具,希望通过良好的设计实践避免在创建新软件时犯明显的错误。它与MVC无关,但可以用来更好地理解MVC
MVC的关键在于,模型不会被处理显示细节的代码所污染。这样,您就可以单独隔离模型内部的“业务逻辑”或“类应该做什么”。视图会对模型中的更改做出反应,因为模型会向每个已针对模型注册的视图发送消息(侦听器模式)。消息通常非常简洁,基本上不需要包含“模型已更改”以外的任何数据
当视图收到模型发生更改的通知时,视图将从模型的公共界面获取必要的数据。一旦视图获得了所需的数据,它将向用户显示数据(使用视图打算支持的任何界面)。这将数据的表示隔离到一个类,当视图不兼容地更改时,该类将中断,并允许修改视图代码,而无需对模型类进行“兼容性”修改
控制器负责知道焦点在哪里,以及更新哪个模型或视图。它是将事物组合在一起的粘合剂,并负责正确处理输入。因此,根据定义,控制器必须是一个委托类?一个将函数调用等委托给其他执行实际工作的类的类?不完全是;我错了…但我倾向于使用前端控制器,这是我的一点偏见。更重要的是它对输入做出响应。