JAVA 设计模式 职责链模式

简介: 用途 职责链模式 (Chain Of Responsibility) 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

用途


职责链模式 (Chain Of Responsibility)
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
职责链模式是一种 行为型模式


 

结构

图-职责链模式

Handler : 定义一个处理请求的接口。( 可选的)实现设置后继者的方法。
abstract  class Handler {
     protected Handler successor;
     public  void SetSuccesssor(Handler successor) {
         this.successor = successor;
    }
    
     public  abstract  void HandlerRequest( int request);
}

ConcreteHandler : 处理它所负责的请求,可以访问它的后继者,如果可处理该请求,就处理之,否则就将请求转发给它的后继者。

class ConcreteHandler1  extends Handler {
    @Override
     public  void HandlerRequest( int request) {
         if (request >= 0 && request < 10) {
            System.out.println("ConcreteHandler1 处理请求 " + request);
        }  else  if ( null != successor) {
            successor.HandlerRequest(request);
        }
    }
}

class ConcreteHandler2  extends Handler {
    @Override
     public  void HandlerRequest( int request) {
         if (request >= 10 && request < 20) {
            System.out.println("ConcreteHandler2 处理请求 " + request);
        }  else  if ( null != successor) {
            successor.HandlerRequest(request);
        }
    }
}

class ConcreteHandler3  extends Handler {
    @Override
     public  void HandlerRequest( int request) {
         if (request >= 20 && request < 30) {
            System.out.println("ConcreteHandler3 处理请求 " + request);
        }  else  if ( null != successor) {
            successor.HandlerRequest(request);
        }
    }
}

Client : 需要设置一个职责链的各环节对象串联起来。

public  class ChainOfResponsibilityPattern {
     public  static  void main(String[] args) {
        Handler h1 =  new ConcreteHandler1();
        Handler h2 =  new ConcreteHandler2();
        Handler h3 =  new ConcreteHandler3();
        h1.SetSuccesssor(h2);
        h2.SetSuccesssor(h3);
        
         int[] requests = {2, 29, 9, 15, 4, 19};
         for ( int i : requests) {
            h1.HandlerRequest(i);
        }
    }
}



推荐

本文属于 JAVA设计模式系列



参考资料

《大话设计模式》

《HeadFirst设计模式》

 

目录
相关文章
|
设计模式 前端开发
Java-设计模式-20-中介者模式
中介者模式(Mediator Pattern)就是用一个中介类将多个对象和类之间的交互全部放到该类中来处理,这样使得对象之间不需要显式的相互通信,降低代码的耦合性。也属于行为型模式。
67 0
Java-设计模式-20-中介者模式
|
设计模式 Java
Java-设计模式-16-责任链模式
责任链模式(Chain of Responsibility Pattern)就是在一个请求出去后,将请求的接受对象串为一个链路。请求对象只负责将请求发送出去,不管这个链路中哪个对象接受处理,将请求的发送者和接收者进行解耦。属于行为型模式。
91 0
Java-设计模式-16-责任链模式
|
设计模式 Java
Java中常用的设计模式【责任链模式】
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
149 0
Java中常用的设计模式【责任链模式】
|
设计模式 算法 Java
Java中常用的设计模式【策略模式】
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
137 0
Java中常用的设计模式【策略模式】
|
设计模式 Java
Java中常用的设计模式【模板模式】
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
87 0
Java中常用的设计模式【模板模式】
|
设计模式 Java
Java中常用的设计模式【装饰器模式】
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
130 0
Java中常用的设计模式【装饰器模式】
|
设计模式 算法 Java
JAVA 设计模式-策略模式
策略模式(Strategy Pattern) 也叫 政策模式(Policy Pattern)。指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法
181 0
|
设计模式 算法 Java
java 设计模式之模板方法模式
java 设计模式之模板方法模式
115 0
java 设计模式之模板方法模式
|
设计模式 算法 Java
Java-设计模式之策略模式
策略模式作为常用的设计模式之一,在我们开发过程中经常会被用到;本文从概念、角色、实例应用、设计原则、优缺点和应用场景等方面对策略模式进行了解读,希望可以对大家有所帮助;如果有问题,欢迎大家来指证和讨论;
813 0
Java-设计模式之策略模式
|
设计模式 自动驾驶 Java
Java中的设计模式(三):装饰器模式
从多型号小鹏中学习装饰器模式
Java中的设计模式(三):装饰器模式