zoukankan      html  css  js  c++  java
  • 【设计模式】-行为型-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("没有人处理该请求!");
                }
            } 
        }
    }
    
  • 相关阅读:
    控件
    ASP.NET简介与Repeater重复器
    WinForm简介
    ADO.net测试题
    6.08练习
    高级查询几种方法
    数据库查询的几种方式
    MySQL更新(修改、查询)
    create(创建) table(表格) student<表名>
    候选键,主键,外键
  • 原文地址:https://www.cnblogs.com/tuofan/p/12377023.html
Copyright © 2011-2022 走看看