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、当处理一个请求的对象集合应该动态地被确定时

  • 相关阅读:
    医学院现代教育技术中心(网络中心)研究
    计算机网络视频教程(上海交通大学)
    教育部普通高中信息技术课程标准成员介绍
    教育部普通高中信息技术课程标准
    数据库设计的三种范式
    普式游戏(pervasive game)
    帮你了解职业高中
    IP私有地址
    巧用组策略,让Windows登录更安全
    关闭SQL Server 2012智能感知代码提示功能
  • 原文地址:https://www.cnblogs.com/yanghj/p/13454681.html
Copyright © 2011-2022 走看看