首页 > 其他分享 >设计模式-责任链模式

设计模式-责任链模式

时间:2024-08-21 17:58:23浏览次数:15  
标签:Task FinishTask 模式 taskContent 责任 Role role 设计模式 public

概述

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


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

责任链模式

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);
            }
        }
    }
}


输出结果

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

标签:Task,FinishTask,模式,taskContent,责任,Role,role,设计模式,public
From: https://blog.csdn.net/qq_58870988/article/details/141399367

相关文章

  • 更快更强,SLS 推出高性能 SPL 日志查询模式
    作者:无哲引言随着数字化进程的持续深化,可观测性一直是近年来非常火热的话题,在可观测的三大支柱Log/Trace/Metric中,日志(Log)数据一般是最为常见的,企业迈向可观测性的第一步,也往往始于日志数据的采集上云。日志完成收集后,最直接的需求就是从海量日志数据中检索分析出有价值的信息......
  • NAT地址转换中的PAT(地址复用)模式
    简介         在数据进行传输时,必要经过公网IP才能够传到其他地方(除了局域网),在局域网中想要将数据进行传输到外网,又不浪费公有IP的前提下,NAT地址转换应运而生。    NAT地址转换分为静态地址转换,动态地址转换,以及PTA地址转换,前两种只能一对一,也就说一......
  • Flannel IPIP DR 模式
    FlannelIPIPDR模式一、环境信息主机IPubuntu172.16.94.141软件版本docker26.1.4helmv3.15.0-rc.2kind0.18.0clab0.54.2kubernetes1.23.4ubuntuosUbuntu20.04.6LTSkernel5.11.5内核升级文档二、安装服务kind配置文......
  • 利用java设计模式的思维优化代码
    在Java开发中,设计模式提供了一套解决常见软件设计问题的成熟方案。通过合理应用设计模式,可以提高代码的可维护性、可读性和扩展性。以下是几个常用设计模式的示例,说明如何利用设计模式思维来优化代码。1.工厂模式(FactoryPattern)场景:假设你在开发一个系统,需要创建不同类......
  • 网络增加安全策略,兼容模式下打不开网页的问题,用到了js中的获取时间
    1、遇到了403的问题,查到原因是因为要url转义,可是转义后,发现极速模式可以用,兼容模式依然是403的问题。所以认为兼容模式与极速模式的解析url中存在很大差异,通过比较兼容模式与极速模式的url,发现兼容模式有中文字符,极速模式下是转义的,所以将中文字符换成英文,发现可以打开链接了。......
  • FSM 设计模式学习
    FSM设计模式学习FSMStructFSM定义了状态机的三个阶段:Enter、Tick、ExitstructFSM{public: FSM(){ } TUniqueFunction<void()>Enter; TUniqueFunction<void(float)>Tick; TUniqueFunction<void()>Exit;};enumEState枚举了不同的状态UENUM(BlueprintType)......
  • 单例模式
    单例设计思想保证类在内存中只有一个对象如何实现类在内存中只有一个对象呢?构造私有本身提供一个对象通过公共的方法让外界访问packagecom.shujia.day20.danlidemo;/*单例模式:在整个java程序运行过程中,某个类自始至终只允许存在一个对象两......
  • 设计模式六大原则-依赖倒置原则(五)
    设计模式六大原则之一的依赖倒置原则(DependencyInversionPrinciple,DIP)是面向对象编程中的一项重要设计原则,它强调高层模块不应该依赖于低层模块,而是应该依赖于抽象。这一原则的核心思想是面向接口编程,旨在提高软件系统的可维护性、可扩展性和可重用性。以下是对依赖倒置原......
  • 设计模式六大原则-里氏替换原则(三)
    设计模式六大原则之一的里氏替换原则(LiskovSubstitutionPrinciple,LSP)是面向对象设计中一个至关重要的原则,由芭芭拉·利斯科夫(BarbaraLiskov)在1987年的一次会议演讲中首次提出。该原则强调了在面向对象编程中,子类对象应该能够无差别地替换掉父类对象,并且不会影响到程序的正......
  • 设计模式-状态模式
    概述状态模式也是一种行为型的设计模式,其最主要的思想是将状态封装到对象中,然后对象的行为依赖于状态,使用Switch语句是有不同的,较少了很多分支语句的使用,可以参考下面的例子,如果使用分支语句会有比较多的判断,但是使用状态模式,就减少了对应的判断,也使得代码在使用的时候会减少......