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

    责任链模式:

    一个请求的处理需要多个对象当中的一个或几个协作处理。

    /**
     * 责任链模式
     */
    public class responsibility {
        public static void main(String[] args) {
    //        Request request = new Request.RequestBuilder().frequentOk(true).loggedOn(true).build();
            Request request = new Request.RequestBuilder().frequentOk(true).loggedOn(false).build();
    
            RequestFrequenthandler requestFrequenthandler = new RequestFrequenthandler(new Logininghandler(null));
    
            if (requestFrequenthandler.process(request)){
                System.out.println("正常业务处理。。。");
            }else {
                System.out.println("访问异常。。。");
            }
        }
    }
    
    class Request{
        private boolean loggedOn;
        private boolean frequentOk;
        private boolean isPermits;
        private boolean containsSensitiveWords;
        private boolean requestBody;
    
        public Request(boolean loggedOn, boolean frequentOk, boolean isPermits, boolean containsSensitiveWords) {
            this.loggedOn = loggedOn;
            this.frequentOk = frequentOk;
            this.isPermits = isPermits;
            this.containsSensitiveWords = containsSensitiveWords;
        }
    
    
        public boolean isLoggedOn(){
            return loggedOn;
        }
    
        public boolean isfrequentOk(){
            return frequentOk;
        }
    
        public boolean isPermits(){
            return isPermits;
        }
    
        public boolean iscontainsSensitiveWords(){
            return containsSensitiveWords;
        }
    
        static class RequestBuilder{
            private boolean loggedOn;
            private boolean frequentOk;
            private boolean isPermits;
            private boolean containsSensitiveWords;
    
            RequestBuilder loggedOn(boolean loggedOn){
                this.loggedOn = loggedOn;
                return this;
            }
    
            RequestBuilder frequentOk(boolean frequentOk){
                this.frequentOk = frequentOk;
                return this;
            }
    
            RequestBuilder isPermits(boolean isPermits){
                this.isPermits = isPermits;
                return this;
            }
    
            RequestBuilder containsSensitiveWords(boolean containsSensitiveWords){
                this.containsSensitiveWords = containsSensitiveWords;
                return this;
            }
    
            public Request build() {
                Request request = new Request(loggedOn, frequentOk, isPermits, containsSensitiveWords);
                return request;
            }
    
        }
    }
    
    abstract class Handler{
        Handler next;
    
        public Handler getNext() {
            return next;
        }
    
        public void setNext(Handler next) {
            this.next = next;
        }
    
        public Handler(Handler next) {
            this.next = next;
        }
    
        abstract boolean process(Request request);
    }
    
    class RequestFrequenthandler extends Handler{
    
        public RequestFrequenthandler(Handler next) {
            super(next);
        }
    
        @Override
        boolean process(Request request) {
            System.out.println("访问频率控制。。。");
    
            if (request.isfrequentOk()){
                Handler next = getNext();
                if (null == next){
                    return true;
                }
                if (next.process(request)){
                    return true;
                }else {
                    return false;
                }
            }
            return false;
        }
    }
    
    
    class Logininghandler extends Handler{
    
        public Logininghandler(Handler next) {
            super(next);
        }
    
        @Override
        boolean process(Request request) {
            System.out.println("登录验证。。。");
    
            if (request.isLoggedOn()){
                Handler next = getNext();
                if (null == next){
                    return true;
                }
                if (next.process(request)){
                    return true;
                }else {
                    return false;
                }
            }
            return false;
        }
    }
  • 相关阅读:
    百度大脑IOCR财会票据识别技术接入小程序,快速实现财会票据识别
    接入百度大脑一站式内容审核平台,可快速提升审核效率
    利用百度AI快速开发出一款“问答机器人”并接入小程序
    接入百度大脑表格文字识别技术,快速降低信息电子化录入成本
    百度大脑UNIT3.0智能对话技术全面解析
    利用百度大脑,快速搭建一个红酒识别的小程序
    百度大脑UNIT3.0详解之嵌入式对话理解技术
    人群流量监控,安全管理升级
    python globals函数
    python reduce/map/filter函数区别
  • 原文地址:https://www.cnblogs.com/chenfx/p/14792134.html
Copyright © 2011-2022 走看看