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

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

    在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

    package com.ceshi16;
    
    public interface Handler {
        public void operator();
    }
    package com.ceshi16;
    
    public abstract class AbstractHandler {
        private Handler handler;
    
        public Handler getHandler() {
            return handler;
        }
    
        public void setHandler(Handler handler) {
            this.handler = handler;
        }
    }
    package com.ceshi16;
    
    public class MyHandler extends AbstractHandler implements Handler{
    
        private String name;
    
        public MyHandler(String name) {
            this.name = name;
        }
    
        @Override
        public void operator() {
            System.out.println(name+"deal!");
            if(getHandler()!=null){
                getHandler().operator();
            }
        }
    
    }
    package com.ceshi16;
    
    public class Test {
    
        public static void main(String[] args) {
            MyHandler h1 = new MyHandler("h1");
            MyHandler h2 = new MyHandler("h2");
            MyHandler h3 = new MyHandler("h3");
    
            h1.setHandler(h2);
            h2.setHandler(h3);
    
            h1.operator();
        }
    }

    结果:

    其实,责任链模式的处理原则是 "如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。"

    所以实例并不能体现出这个。通常需要在operator方法中添加一些额外的判定。

  • 相关阅读:
    面试随缘刷题--day7
    面试随缘刷题--day6
    面试随缘刷题--day5
    面试随缘刷题--day4
    面试随缘刷题--day3 二分专题
    Python 将普通图片转字符画
    相离的圆(排序+二分查找)
    Java利用图灵机器人接口实现简单的聊天程序
    正整数分组(动态规划)
    循环数组最大子段和(动态规划)
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756442.html
Copyright © 2011-2022 走看看