zoukankan      html  css  js  c++  java
  • 无废话设计模式(20)行为型模式--职责链模式

    0-前言

      职责链模式定义:

        使多个对象都有机会处理请求,从而避免请求的发送者喝接受者之间的耦合关系。

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

    1-实现

    1-1、简单UML图

     

    1-2、代码实现

    //1、处理请求的抽象父类
    abstract class Handler
    {
        //A、设置下一处理节点
        protected Handler NestHandler;
        public void setNestHandler(Handler nestHandler)
        {
            NestHandler = nestHandler;
        }
        //B、处理方法
        public abstract void HandlerRequest(int count);
    
    }
    
    //1-1、具体的请求处理者A
     class HandlerHR extends Handler
    {
        //B、处理方法
        @Override
        public void HandlerRequest(int count)
        {
            if (count<5) //能处理,直接处理
            {
                System.out.println("才招几个人,HR经理直接就能决定--------------");
            }
            else //不能处理,交给下一个节点处理
            {
                if (NestHandler !=null)
                {
                    System.out.println("招聘人数超过5个,HR经理无权定夺,交给下一节点处理:--------------------");
                    NestHandler.HandlerRequest(count);
                }
            }
        }
    }
    
    //1-1、具体的请求处理者A
    class HandlerBoss extends Handler
    {
        //B、处理方法
        @Override
        public void HandlerRequest(int count)
        {
            if (count>5) //能处理
            {
                System.out.println("招超过5个人,老板我来拍板");
            }
            else //还不能处理,继续交给链的下一个节点处理....
            {
            }
        }
    }

    客户端

            Handler hr = new HandlerHR();
            Handler boss = new HandlerBoss();
            hr.setNestHandler(boss);
    
            hr.HandlerRequest(4);
            hr.HandlerRequest(6);

    运行结果

    2、应用场景简单总结

    1、当有多个对象可以处理同一个请求,而具体哪个对象来处理这个请求在运行时刻需要自动判定时;

    2、当需要在不明确接受者的情况下向多个对象中某一个提交请求时;

    3、当处理一个请求的对象集合应该动态地被确定时

  • 相关阅读:
    Vim 在 windows 环境下的初步配置
    空间向量在任意平面的投影公式推导 (矩阵方法)
    jquery中获取元素的几种方式小结
    开源框架
    将插入的新行放入dataGridView的第一行
    go-mod 入门
    docker 常用启动命令
    golang str 首字母大写
    遇到过的几个难搞的问题
    jwt、session、oauth 异同
  • 原文地址:https://www.cnblogs.com/yanghj/p/13454681.html
Copyright © 2011-2022 走看看