【愚公系列】2021年12月 通用职责分配原则(五)-控制器原则(Controller Principle)

简介: 【愚公系列】2021年12月 通用职责分配原则(五)-控制器原则(Controller Principle)

文章目录

前言

一、控制器原则(Controller Principle)

二、使用步骤

示例

前言

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


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


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


提示:以下是本篇文章正文内容,下面案例可供参考


一、控制器原则(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ù)。

相关文章
|
11月前
|
关系型数据库 MySQL 数据库
开发者如何使用数据库文件存储 DBFS
【10月更文挑战第10天】开发者如何使用数据库文件存储 DBFS
335 5
|
10月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【10月更文挑战第42天】本文是一篇技术性文章,旨在为初学者提供一份关于如何使用Python进行数据分析的入门指南。我们将从安装必要的工具开始,然后逐步介绍如何导入数据、处理数据、进行数据可视化以及建立预测模型。本文的目标是帮助读者理解数据分析的基本步骤和方法,并通过实际的代码示例来加深理解。
198 3
|
10月前
|
vr&ar 网络架构
配置BGP的基本功能
本文介绍了在AR1、AR2、AR3和AR4路由器之间配置BGP协议的过程。具体包括:在AR1和AR2之间建立EBGP连接,在AR2、AR3和AR4之间建立IBGP全连接,配置IP地址,发布AR1的LoopBack1端口,引入直连路由,并通过ping测试验证网络连通性。
配置BGP的基本功能
|
10月前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
203 7
|
10月前
|
消息中间件 供应链 架构师
微服务如何实现低耦合高内聚?架构师都在用的技巧!
本文介绍了微服务的拆分方法,重点讲解了“高内聚”和“低耦合”两个核心设计原则。高内聚强调每个微服务应专注于单一职责,减少代码修改范围,提高系统稳定性。低耦合则通过接口和消息队列实现服务间的解耦,确保各服务独立运作,提升系统的灵活性和可维护性。通过领域建模和事件通知机制,可以有效实现微服务的高效拆分和管理。
279 7
|
算法 安全 网络安全
网络工程师如何利用IPsec VPN技术实现分公司与总部互联?(手工方式)
网络工程师如何利用IPsec VPN技术实现分公司与总部互联?(手工方式)
525 0
网络工程师如何利用IPsec VPN技术实现分公司与总部互联?(手工方式)
|
API 调度 数据库
Python中的异步编程:从基础到实战
【7月更文挑战第31天】在Python的世界里,异步编程是提高程序执行效率的利器。本文将通过具体实例,带你了解Python异步编程的基本概念、核心模块asyncio的使用方法,以及如何在实际项目中应用异步编程来提升性能。我们将一起探索协程、任务、事件循环等概念,并通过代码示例深入理解异步IO操作和并发执行的原理。准备好跟随我们的步伐,让你的Python代码运行得更快、更高效吧!
143 4
|
存储 算法 网络安全
|
Python
在Python中,如何判断文件是否存在
在Python中,如何判断文件是否存在
249 0
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记

热门文章

最新文章