zoukankan      html  css  js  c++  java
  • java设计模式之职责链模式

    责任链模式

      设计模式很多时候都是看见名字都知道意思,责任链,见名知义为请求创建一系列处理对象。 此模式基于请求的类型将请求的发送方和接收方分离。通常每个接收器包含对另一个接收器的引用。如果一个对象不能处理请求,则它将相同的对象传递给下一个接收者,这样形成一条链。这种模式属于行为模式。基于这种情况,我写了一个字符串判断是否为null或者""的责任链,先去判断null、判断不出来在判断"",这样就形成一条链。简单简洁粗暴

    责任链模式UML图

    责任链模式代码

    package com.roc.responsibility;
    /**
     * 判断是否为空的抽象类
     * @author liaowp
     *
     */
    public abstract class IsEmptyAbstract {
    
        protected IsEmptyAbstract isEmptyAbstract;
        
        public void setIsEmptyAbstract(IsEmptyAbstract isEmptyAbstract) {
            this.isEmptyAbstract = isEmptyAbstract;
        }
        
        public boolean  inputMsg(String str){
              if(isEmpty(str)){//
                  return true;
              }else{//如果没有判断出来就传入下一个
                  if(isEmptyAbstract !=null){
                      return isEmptyAbstract.isEmpty(str);
                   }else{
                       System.out.println("判断器没有初始化");
                       return false;
                   }
              }
        }
    
        /**
         * 判断是否为空
         * @return
         */
        abstract protected boolean isEmpty(String str);
    }
    package com.roc.responsibility;
    /**
     * 判断是不是null
     * @author liaowp
     *
     */
    public class isNull extends IsEmptyAbstract{
    
        @Override
        protected boolean isEmpty(String str) {
            return null==str;
        }
    
    }
    package com.roc.responsibility;
    /**
     * 判断是不是""
     * @author liaowp
     *
     */
    public class IsEmpty extends IsEmptyAbstract{
    
        @Override
        protected boolean isEmpty(String str) {
            return "".equals(str);
        }
    }
    package com.roc.responsibility;
    /**
     * 责任链模式
     * @author liaowp
     *
     */
    public class Client {
        
        public static void main(String[] args) {
            String str = "";
            isNull isNull = new isNull();
            IsEmpty isEmpty = new IsEmpty();
            isNull.setIsEmptyAbstract(isEmpty);
            System.out.println(isNull.inputMsg(str));
        }
    }

    责任链模式适用场景

    1、有多个对象共同对一个任务进行处理。

    2、这些对象使用链式存储结构,形成一个链,每个对象知道自己的下一个对象。

    3、一个对象对任务进行处理,可以添加一些操作后将对象传递个下一个任务。也可以在此对象上结束任务的处理,并结束任务。

  • 相关阅读:
    JS闭包
    webpack管理资源
    在webpack中使用配置文件
    webpack起步
    buuctf-MISC 面具下的flag
    Kali linux Steghide开源隐写工具
    buuctf-misc 九连环
    buuctf-Crypto rsarsa 1
    buuctf-web HardSQL 1
    buuctf-web Hack World 1
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/5791053.html
Copyright © 2011-2022 走看看