• 【设计模式】-行为型-4-责任链模式


    主要角色

    1. 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。
    2. 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。
    3. 客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程。

    代码示例

    package chainOfResponsibility;
    public class ChainOfResponsibilityPattern
    {
        public static void main(String[] args)
        {
            //组装责任链 
            Handler handler1=new ConcreteHandler1(); 
            Handler handler2=new ConcreteHandler2(); 
            handler1.setNext(handler2); 
            //提交请求 
            handler1.handleRequest("two");
        }
    }
    //抽象处理者角色
    abstract class Handler
    {
        private Handler next;
        public void setNext(Handler next)
        {
            this.next=next; 
        }
        public Handler getNext()
        { 
            return next; 
        }   
        //处理请求的方法
        public abstract void handleRequest(String request);       
    }
    //具体处理者角色1
    class ConcreteHandler1 extends Handler
    {
        public void handleRequest(String request)
        {
            if(request.equals("one")) 
            {
                System.out.println("具体处理者1负责处理该请求!");       
            }
            else
            {
                if(getNext()!=null) 
                {
                    getNext().handleRequest(request);             
                }
                else
                {
                    System.out.println("没有人处理该请求!");
                }
            } 
        } 
    }
    //具体处理者角色2
    class ConcreteHandler2 extends Handler
    {
        public void handleRequest(String request)
        {
            if(request.equals("two")) 
            {
                System.out.println("具体处理者2负责处理该请求!");       
            }
            else
            {
                if(getNext()!=null) 
                {
                    getNext().handleRequest(request);             
                }
                else
                {
                    System.out.println("没有人处理该请求!");
                }
            } 
        }
    }
    
  • 相关阅读:
    什么是架构
    intellij idea新建maven项目,一直loading archetype list.....
    maven使用出现的错误
    mock使用中出现的错误
    9个最好用的在线编译/调试工具
    Junit测试中找不到junit.framework.testcase
    mysql图形化界面MySQL_Workbench
    win7下mysql免安装版使用
    qemu安装
    逻辑卷管理
  • 原文地址:https://www.cnblogs.com/tuofan/p/12377023.html
Copyright © 2020-2023  润新知