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

    职责链模式

    使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合。将系统连成一条线,并沿着这条线传递请求,直到有一个对象处理他为止。

    Handler

    package com.hml.responsiblity;
    
    public abstract class Handler {
        
        protected Handler successor;
    
        public Handler getSuccessor() {
            return successor;
        }
    
        public void setSuccessor(Handler successor) {
            this.successor = successor;
        }
        
        public abstract void handleRequest(int num);
    
    }

    Handler1

    package com.hml.responsiblity;
    
    public class Handler1 extends Handler {
    
        @Override
        public void handleRequest(int num) {
            if (num < 10) {
                System.out.println(num);
            }else {
                successor.handleRequest(num);
            }
        }
    
    }

    Handler2

    package com.hml.responsiblity;
    
    public class Handler2 extends Handler {
    
        @Override
        public void handleRequest(int num) {
            if (num < 30) {
                System.out.println(num);
            }else {
                successor.handleRequest(num);
            }
        }
    
    }

    Handler3

    package com.hml.responsiblity;
    
    public class Handler3 extends Handler {
    
        @Override
        public void handleRequest(int num) {
            if (num > 30) {
                System.out.println(num);
            }else {
                successor.handleRequest(num);
            }
        }
    
    }

    Test

    package com.hml.responsiblity;
    
    public class Test {
    
        public static void main(String[] args) {
            Handler h1 = new Handler1();
            Handler h2 = new Handler2();
            Handler h3 = new Handler3();
            
            h1.setSuccessor(h2);
            h2.setSuccessor(h3);
            
            h1.handleRequest(1);
            h1.handleRequest(13);
        }
    }

    职责链的好处是一个请求沿着一条链传递,直到有一个对象处理。避免了请求的发送者和接受者之间的耦合。

  • 相关阅读:
    java 多线程 Future callable
    nginx Access-Control-Allow-Origin css跨域
    maven 项目调试本地代码
    tomcat -ROOT 与webapps 的关系,关于部署的一些问题
    需求分析,挖掘背后的原因
    js 短信验证码 计时器
    总结一些小问题
    基于synchronized 或 ReadWriteLock实现 简单缓存机制
    java cookie 工具类
    309. 最佳买卖股票时机含冷冻期
  • 原文地址:https://www.cnblogs.com/heml/p/4655904.html
Copyright © 2011-2022 走看看