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

    参考:

    http://www.cnblogs.com/wxisme/p/4550712.html

    责任链模式:将能够处理同一类请求的对象连成一条链所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,

                     如果能则处理,如果不能则传递给链上的下一个对象。
    优点:将请求者和发送者解耦
             简化对象的处理过程
             可以通过改变链中的成员或成员的顺序来动态的新增或则删除责任。

    缺点:不能保证请求一定会执行,可能或落到责任链之外。

             不容易观察运行时的特征,处理请求的方法比较分散。

    package com.yun.base.design.chain;
    
    public abstract class Handler {
        //下一级责任链
        public Handler handler;
        //设置下一级责任链
        public void setSuccessor(Handler handler){
            this.handler=handler;
        }
        public abstract void request(int request);
    }
    package com.yun.base.design.chain;
    
    public class MyHandler1 extends Handler {
    
        @Override
        public void request(int request) {
            if(request<10){
                System.out.println("我是handler1,我处理了请求:"+request);
            }else {
                this.handler.request(request);
            }
        }
    
    }
    package com.yun.base.design.chain;
    
    public class MyHandler2 extends Handler {
    
        @Override
        public void request(int request) {
            if(request>10){
                System.out.println("我是handler2,我处理了请求:"+request);
            }else {
                System.out.println("请求"+request+"没人能处理");
            }
        }
    
    
    }

    测试

    package com.yun.base.design.chain;
    
    public class ResponsibilityChainTest {
    
        public static void main(String[] args) {
            //创建处理器
            Handler handler1=new MyHandler1();
            Handler handler2=new MyHandler2();
            //客户端创建处理器的关联,形成链
            handler1.setSuccessor(handler2);
            //创建任务,此处为一些数字,不同大小,处理器处理结果不同
            int[] requests={4,10,59,2,16};
            //调用处理器处理        
            for(int request:requests){
                handler1.request(request);
            }
        }
        
    }
  • 相关阅读:
    linux各发行版的系统平台信息获取方式调研
    linux各发行版本的系统资源获取方式调研
    查看linux版本系统平台信息方法汇总
    《这么慢,那么美》------ 听见
    学习博客大集锦
    java 面试题及答案
    Java方向如何准备BAT技术面试答案(汇总版)
    java 虚拟机系列-java内存分配、类加载,垃圾回收机制算法
    java 基础概念
    linux 脚本学习--细节问题
  • 原文地址:https://www.cnblogs.com/yun965861480/p/7307242.html
Copyright © 2011-2022 走看看