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方法中添加一些额外的判定。

  • 相关阅读:
    【转】NSArray,NSSet,NSDictionary总结
    dequeueReusableCellWithIdentifier
    可任意自定义的UITableViewCell
    contentSize、contentInset和contentOffset区别
    Cocoa的MVC架构分析 delegate
    WP7 Toolkit ExpanderView 控件 介绍 02
    ObjectiveC中一种消息处理方法performSelector: withObject:
    [转]HTML5多点触摸演示源码(Canvas绘制演示)
    Matlab 积分图的快速计算
    测试
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756442.html
Copyright © 2011-2022 走看看