写点什么

【愚公系列】2022 年 06 月 通用职责分配原则 (五)- 控制器原则

作者:愚公搬代码
  • 2022 年 6 月 17 日
  • 本文字数:1203 字

    阅读完需:约 4 分钟

前言

GRASP:General Responsibility Assignment Software Patterns 通用职责分配软件模式。


首先我们先来区分下 GRASP 与 GOF 模式的区别,它们主要在什么时候用,用来做什么。在软件开发过程中,我们常说面向对象开发,面向对象思想应该贯穿整个软件开发生命周期。我们在将现实世界中的业务对象及业务功能抽象成软件系统中的系统对象过程中应该遵循使用 GRASP 模式。而在具体技术实现上应该遵循使用 GOF 设计模式,来实现系统功能。即 GRASP 主要使用在分析设计阶段,与具体技术无关;而 GOF 模式主要使用在开发阶段,与具体技术相关,它是对 GRASP 设计成果进行实现时而使用,是一种开发阶段的设计模式。


GRASP 软件设计模式包括 9 个模式:创建者、信息专家、低耦合、控制器、高内聚、多态性、纯虚构、间接性、防止变异。


<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">


<font color=#999AAA >提示:以下是本篇文章正文内容,下面案例可供参考

一、控制器原则(Controller Principle)

(1)问题


谁应该负责处理一个输入系统事件?


(2)方案


把接收或者处理系统事件消息的职责分配给一个类。这个类可以代表:


整个系统、设备或者子系统;系统事件发生时对应的用例场景,在相同的用例场景中使用相同的控制器来处理所有的系统事件。(3)分析


一个控制器是负责接收或者处理系统事件的非图形用户界面对象。一个控制器定义一组系统操作方法。在控制器模式中,要求系统事件的接收与处理通常由一个高级类来代替;一个子系统需要定义多个控制器,分别对应不同的事务处理。通常,一个控制器应当把要完成的功能委托给其他对象,它只负责协调和控制,本身不完成太多的功能。它可以将用户界面所提交的请求转发给其他类来处理,控制器可以重用,且不能包含太多业务逻辑,一个系统通常也不能设计一个统一的控制器。控制器模式与 MVC 模式相对应,MVC 是一种比设计模式更加高级的架构模式。

二、使用步骤

示例

public class HomeController : Controller {
public IActionResult Index() { return View(); }
public IActionResult About() { ViewData["Message"] = "Your application description page.";
return View(); }
public IActionResult Contact() { ViewData["Message"] = "Your contact page.";
return View(); }
public IActionResult Privacy() { return View(); }
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); }
}
复制代码


以上代码摘自微软 Asp.Net Core Web 应用(MVC) 项目生成的默认模板。也是 Asp.Net MVC 开发的日常代码,意思过于简单,故不再赘述(zhuìshù)。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2022.03.01 加入

该博客包括:.NET、Java、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、python、大数据等相关使用及进阶知识。查看博客过程中,如有任何问题,皆可随时沟通。

评论

发布
暂无评论
【愚公系列】2022年06月 通用职责分配原则(五)-控制器原则_6月月更_愚公搬代码_InfoQ写作社区