当前位置: 首页 > news >正文

设计模式-责任链模式

概述

责任链模式也是一种行为型的设计模式它允许按照设定的规则处理事件,顺序执行直到有处理者可以处理这个事件为止,这样的设计模式可以让任务的发出者和任务的处理者没有直接的联系减少依赖关系,主要由处理者和处理关系组成,以下的例子可以看出。


例子:在软件开发中,一般一个任务是先领导知道,如果是领导的事那就领导自己处理,不是领导的事情,那就下发给策划,策划处理不了就给程序,依次向下,每个人处理自己的事情。

责任链模式

using System.Numerics;internal class Program
{private static void Main(string[] args){Task leaderTask = new Leader();//创建领导处理者Task plannerTask = new Planner();//创建策划处理者Task programmerTask = new Programmer();//创建程序员处理者//绑定处理关系leaderTask.NextResponsiblePerson(plannerTask);plannerTask.NextResponsiblePerson(programmerTask);leaderTask.FinishTask(Role.planner, "编写策划");//策划任务leaderTask.FinishTask(Role.programmer, "实现功能");//程序任务}public enum Role//角色枚举{leader,planner,programmer}public abstract class Task//任务抽象类{protected Task? _nestTask;public void NextResponsiblePerson(Task task){_nestTask = task;}public abstract void FinishTask(Role role, string taskContent);}public class Leader : Task//领导{public override void FinishTask(Role role, string taskContent){if (role == Role.leader){Console.WriteLine($"领导执行任务:{taskContent}");}else if (_nestTask != null){_nestTask.FinishTask(role, taskContent);}}}public class Planner : Task//策划{public override void FinishTask(Role role, string taskContent){if (role == Role.planner){Console.WriteLine($"策划执行任务:{taskContent}");}else if (_nestTask != null){_nestTask.FinishTask(role, taskContent);}}}public class Programmer : Task//程序{public override void FinishTask(Role role, string taskContent){if (role == Role.programmer){Console.WriteLine($"程序执行任务:{taskContent}");}else if (_nestTask != null){_nestTask.FinishTask(role, taskContent);}}}
}

输出结果

策划执行任务:编写策划
程序执行任务:实现功能


http://www.mrgr.cn/news/5152.html

相关文章:

  • Python类的介绍
  • 实现Linux的高可用负载均衡
  • 【云原生】企业级WEB应用服务器TOMCAT
  • 在VS Code中使用Snippet Craft扩展提高编码效率
  • 论文阅读:MonoScene: Monocular 3D Semantic Scene Completion
  • vue生命周期函数
  • 探索提示工程 Prompt Engineering的奥妙
  • git常用操作合集
  • SparkContext与SparkSession区别
  • Redhat8 搭建Zabbix6(二)优化
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector(模拟实现)
  • Spring Boot 中动态数据源配置与使用详解
  • 3-1 介绍及传感器(智能应用篇)
  • 【linux】Linux中网络管理工具--nmcli的详细用法实战
  • ARM工作模式
  • 细谈LCM驱动电压VGHVGL电路原理
  • Qt Maintenance Tool工具对组件进行更新安装或移除
  • 【python爬虫】邮政包裹物流查询2瑞数6加密
  • 在Windows Server 2012 R2上安装.NET Framework 3.5
  • MySQL:this is incompatible with sql_mode=only_full_group_by