编程语言
首页 > 编程语言> > c# – GRASP的控制器究竟是什么?

c# – GRASP的控制器究竟是什么?

作者:互联网

Grasp的Controller模式背后的想法是什么?

我目前的解释是,有时你想要实现需要使用几个类的东西,但这些类中没有一个可以或者有权访问所需的信息,所以你创建了一个新的类来完成这项工作,所有需要的课程(这可能是信息专家).

这是Grasp控制器的正确视图吗?

通常在google搜索或SO’ing控制器时,我只得到关于MVC(以及诸如此类)的结果,这些是我不了解的主题,所以我想要的答案不要假设我知道ASP.NET的MVC或其他东西: (

谢谢

解决方法:

根据Wikipedia

A Controller object is a non-user interface object responsible for receiving or handling a system event.

Applying UML and Patterns开始:

What first object beyond the UI layer first receives and coordinates (“controls”) a system operation?

控制器,无论是在MVC还是GRASP或Patterns of EAA中,都是关于接收输入和响应事件的.

我非常直观地概念化它:想想一个视频游戏控制器.

它响应输入事件 – 用户按下按钮.当你按下按钮时它不一定知道该怎么做,但它至少会收到这个事件.

查看控制器,可以轻松找出系统事件是什么 – 也就是说它响应的输入以及用户如何与系统交互.在任天堂控制器上,很明显系统事件是:

>按A
>按B键
>按X键
>按Y.
>按↑
>按↓
>按→
>按←
>按L
>按R键

如果我们要采取所有这些事件并构建一个软件控制器来处理它们,它将是一个MVC控制器:这些事件都与呈现给用户的物理控制器有关 – 如果你愿意,它就是“视图”.但是大多数视频游戏都有第二层输入事件,其中按钮糖化映射到特定的系统操作.例如,如果你在真人快打2中扮演蝎子,按←←B会触发你的一个特殊动作.在这种情况下,系统可能需要不同的控制器来处理这些不同类型的事件:

这里,NES按钮控制器是一个MVC控制器,它可以跟踪UI元素的状态 – 例如,记住按什么顺序按下了哪些按钮.根据应用程序状态(参见Application Controller – 另一个!),NES按钮控制器将通过调用其他控制器上的方法(例如Scorpion控制器 – 它们是用例控制器)来响应某些按钮组合.

重要的是,通过查看这些控制器对象的设计,您可以快速轻松地枚举它们响应的系统事件.

总而言之,MVC控制器最终仍然是一种GRASP控制器 – 因为它的方法往往代表响应用户输入的系统事件.但是还有其他GRASP控制器不是MVC控制器:用例控制器. GRASP用例控制器可能响应系统事件,例如“用户创建新的销售”,而MVC控制器将响应诸如“系统接收/ sales / new的PUT请求”或“java.awt.event.ActionEvent”之类的事件fires`”.

标签:c,java,design-patterns,controller,grasp
来源: https://codeday.me/bug/20190610/1213270.html