通用职责分配软件原则之5-控制器原则

一个控制器是负责接收或者处理系统事件的非图形用户界面对象。一个控制器定义一组系统操作方法。在控制器模式中,要求系统事件的接收与处理通常由一个高级类来代替;一个子系统需要定义多个控制器,分别对应不同的事务处理。

C#设计模式概述

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

本文由 .Net中文网 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:https://www.byteflying.com/archives/377

发表评论

登录后才能评论