首页 > 编程语言 >C# 设计模式之行为型 —— 责任链模式

C# 设计模式之行为型 —— 责任链模式

时间:2025-01-17 19:31:02浏览次数:3  
标签:--- set get C# 责任 ApplyContext 设计模式 public

行为型设计模式

11种行为型设计模式,是最大的一个家族了。

行为型设计模式关注的是对象和行 为的分离---直白点说,就是方法到 底放在哪里?会看到频繁的逻辑(方 法)转移 责任链模式,简直就是行为型设计模式无止境的行为转移。

1. Interpreter(解释器)

2. Template Method(模板方法)

3. Chain of Responsibility(责任链)

4. Command(命令)

5. Iterator(迭代器)

6. Mediator(中介者)

7. Memento(备忘录)

8. Observer(观察者)

9. State(状态)

10.Strategy(策略)

11.Visitor(访问者)

责任链模式

责任链模式(ChainOfResponsibility-Pattern)
使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系,将这些对象

串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。

请假申请

    /// <summary>
    /// 请假申请
    /// </summary>
    public class ApplyContext
    {
        public int Id { get; set; }
        public string Name { get; set; }
        /// <summary>
        /// 请假时长
        /// </summary>
        public int Hour { get; set; }
        public string Description { get; set; }
        public bool AuditResult { get; set; }
        public string AuditRemark { get; set; }
    }

面向过程编程

    public class ResponsibilityChainProgram
    {
        public static void Show()
        {
            //场景:请假申请的审批---各级审批
            //来个Context上下文---包含请求信息-处理结果-中间结果---行为型设计模式的常见要素
            ApplyContext applyContext = new ApplyContext()
            {
                Id = 10372,
                Name = "Kiss",
                Hour = 40,
                Description = "我想参加上海线下聚会",
                AuditResult = false,
                AuditRemark = ""
            };
            {
                //很直白翻译了需求,完成了业务功能---菜鸟
                //面向过程编程POP--暴露业务细节,无法应对变化---准备升级--OOP
                if (applyContext.Hour <= 8)
                {
                    Console.WriteLine("PM审批通过");
                }
                else if (applyContext.Hour <= 16)
                {
                    Console.WriteLine("主管审批通过");
                }
                else
                {
                    Console.WriteLine("****************");
                }
            }
        }
    }

面向对象

审批者基类

    public abstract class AbstractAuditor
    {
        public string? Name { get; set; }
        protected AbstractAuditor _Auditor = null;

        public void SetNext(AbstractAuditor abstractAuditor)
        {
            this._Auditor = abstractAuditor;
        }

        public abstract void Audit(ApplyContext applyContext);

        protected void AuditNext(ApplyContext applyContext)
        {
            if (this._Auditor != null)
            {
                this._Auditor.Audit(applyContext);
            }
        }
    }

PM:

标签:---,set,get,C#,责任,ApplyContext,设计模式,public
From: https://blog.csdn.net/yixiazhiqiu/article/details/144627721

相关文章

  • 马斯克 CES 2025 演讲:科技狂人勾勒未来宏伟蓝图
    在2025年国际消费电子展(CES)这个全球科技盛宴上,特斯拉CEO埃隆・马斯克无疑是最耀眼的明星之一。通过与知名营销传播集团Stagwell董事长MarkPenn的独家连线采访,马斯克向全世界展示了他对未来科技的宏大愿景和深刻见解,涵盖了人工智能、机器人技术、脑机接口以及太空探......
  • 202412 青少年软件编程等级考试C/C++ 二级真题答案及解析(电子学会)
    第1题逆行网上有个段子说:妻子在家听广播,听到某高速路上有一辆车在逆行,想到丈夫在那条高速上行驶,就打电话对丈夫说:“老公啊,你走的那条高速上有一辆车在逆行,你小心点。”她丈夫说:“何止啊!我看好几百辆车都在逆行!”现在我们查了一下高速公路上拍到的好几百辆车的时速,发现有的......
  • Kubernetes(k8s)和Docker Compose本质区别
    Kubernetes(简称k8s)和DockerCompose是容器编排领域的两大重要工具,虽然它们都用于管理和编排容器化应用,但在设计目标、功能特性、使用场景和复杂度上存在显著差异。以下将从多个方面详细探讨Kubernetes和DockerCompose的本质区别。一、设计目标与应用场景1.KubernetesK......
  • C++编程:现代软件开发的基石
    C++编程:现代软件开发的基石C++是一种强大的编程语言,广泛应用于软件开发、游戏设计、系统编程等多个领域。它由贝尔实验室的比jarneStroustrup于1979年创建,旨在将面向过程的编程与面向对象的编程结合起来。C++的特点之一是其高性能。由于C++允许对硬件进行直接操作,程序员可以......
  • 深度剖析C++在复杂系统开发中的应用与优化策略
    一、引言1.1研究背景与意义在当今数字化时代,软件开发已成为推动各行业发展的核心驱动力。C++作为一种强大且灵活的编程语言,在现代软件开发领域占据着举足轻重的地位。自1985年正式发布以来,C++凭借其卓越的性能、对硬件的直接操控能力以及丰富的编程范式,广泛应用于操作系统、......
  • C++ 开发前景与 operator 的益处
    一、C++的开发前景在当下的软件开发领域,C++凭借其独特优势,展现出极为广阔的发展前景。(一)性能卓越C++作为一种高效的编程语言,能够直接对硬件资源进行控制与优化。这一特性使其在对性能要求极高的场景中至关重要,如游戏开发、大型工业控制系统、高性能计算等领域。以游戏开......
  • cad.net CurveInfo类
    曲线信息类主要是缓存一层包围盒1,存档曲线Curve2,复合曲线CompositeCurve3d3,单元曲线Curve3d验证包围盒在这里:https://www.cnblogs.com/JJBox/p/18677417publicclassCurveInfo:DRect{publicintRegionColor=0;//染色:斜区0,横区1,竖区2publicMyGro......
  • pandoc + wkhtmltox 批量转换Markdown文件为PDF文件
    1.Pandoc的安装1.下载并安装 官网:Pandoc1.1 解压文件将 pandoc-3.6.2-windows-x86_64.zip 解压到一个目录,例如:复制C:\pandoc解压后的文件夹中应包含以下文件:pandoc.exe(主程序)其他相关文件(如文档和依赖项)。1.2. 将Pandoc添加到系统环境变量为了在命令......
  • 轻量级卷积神经网络 (OL-CNN)
    优化后的轻量级卷积神经网络(OL-CNN)目录优化后的轻量级卷积神经网络(OL-CNN)一、模型背景及动机二、模型创新点1.深度可分离卷积2.动态学习率调整3.网络架构优化三、模型网络结构四、代码实现五、实验结果与结论一、模型背景及动机随着......
  • Android10 Android TV Launcher(ATV) 启动时间优化记录
    为什么要优化?        都是ATV的情况下,H313的开机到桌面时间耗时40S左右,而且开机动画结束后会黑屏很多秒(10S)左右。同一个板子,同一个主控的情况下,ATVLauncher的启动时间比自定义的Launcher启动时间久。同样开机动画结束后会黑屏一段时间,而自定义的Launcher开机动画......