设计模式-职责链模式

简介: 设计模式-职责链模式

设计模式中有一个职责链模式的介绍解决问题是:处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。


通过这个模式就使得在出现一些请求要处理时可以通过这个模式的设置,让请求按照规定好的路线执行,就是逐级的审批出现权限不够时自动转交个下个处理者,就这么一个过程,直到请求被转交到一个权限足够的处理者手中将请求处理为止。


这些请求的传递都是在你使用的过程中设置好的,


同时还符合单一职责原则和开闭原则


设置处理请示的接口


 abstract class Handler
    {
        protected Handler successor;
        //设置继承者
        public void SetSuccessor(Handler successor)
        {
            this.successor = successor;
        }
       //供子类重写的父类方法,进行请求的传递
        public abstract void HandlerRequest(int request);
    }


实际处理类

class ConreteHandler1:Handler
    {
        public override void HandlerRequest(int request)
        {
            if (request>=0&& request<10)
            {
                Console.WriteLine("{0} 处理请求{1}",this.GetType().Name,request);
            }
            else if (successor!=null)
            {
                //请求的传递
                successor.HandlerRequest(request);
            }
        }
    }

其余两个处理着类与第一个相同只是范围不一样而已

客户端

static void Main(string[] args)
        {
            Handler h1 = new ConreteHandler1();
            Handler h2 = new ConreteHandler2();
            Handler h3 = new ConreteHandler3();
            h1.SetSuccessor(h2);//设置继承在h1无法处理后由h2处理
            h2.SetSuccessor(h3);//同理,h2无法处理后由h3处理
            int[] requests = { 2, 4, 5, 7, 8, 12, 23, 27, 6 };
            foreach (int request in requests)
            {
                h1.HandlerRequest(request);
            }
            Console.Read();
        }

在客户端当中设置好处理这类的继承循序,然后剩下的就是按照设置好的顺序执行了,这么做的好处就是请求发送者和处理者之间不知道是谁,但是也会出现一个问题,就是发送的请求可能到了最后一个处理者手中得不到处理的情况或者因为没有正确的配置而得不到处理,通俗的说就是你想要邮寄一封信,但是你信的地址写的不对,那么你这封信最终肯定是无法送达的。

相关文章
|
6月前
|
设计模式
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统
102 1
|
6月前
|
设计模式
二十三种设计模式:解密职责链模式-购物优惠活动的设计艺术
二十三种设计模式:解密职责链模式-购物优惠活动的设计艺术
|
4月前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 职责链模式
js设计模式【详解】—— 职责链模式
76 8
|
5月前
|
设计模式
职责链模式-大话设计模式
职责链模式-大话设计模式
|
5月前
|
设计模式
行为设计模式之职责链模式
行为设计模式之职责链模式
|
6月前
|
设计模式 Go
[设计模式 Go实现] 行为型~职责链模式
[设计模式 Go实现] 行为型~职责链模式
|
设计模式 缓存 Java
行为型设计模式08-职责链模式
行为型设计模式08-职责链模式
37 0
|
6月前
|
设计模式 Java
小谈设计模式(25)—职责链模式
小谈设计模式(25)—职责链模式
|
6月前
|
设计模式 JavaScript
职责链模式--设计模式
职责链模式--设计模式
23 0
|
设计模式
设计模式——职责链模式
设计模式——职责链模式

热门文章

最新文章

  • 1
    C++一分钟之-设计模式:工厂模式与抽象工厂
    42
  • 2
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    46
  • 3
    C++一分钟之-C++中的设计模式:单例模式
    54
  • 4
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    37
  • 5
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    61
  • 6
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    57
  • 7
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    41
  • 8
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    49
  • 9
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    106
  • 10
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    76