学习笔记

Android源码设计模式_6责任链模式
Publish: 2018/8/17   

定义

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

使用场景

  1. 多个对象可以处理同一请求,但具体由那个对象处理则再运行时动态决定。
  2. 在请求处理者不明确的情况下向多个对象中的一个提交一个请求。
  3. 需要动态指定一组对象处理请求。

实现示例

 //抽象处理者
 public abstract class Handler{
     protected Handler successor;//下一节点的处理者

     /**
      * 请求处理
      * @param condition 请求条件
      */  
     public abstract void handleRequest(String condition);
 }

 public class ConcreteHander1 extends Handler{
     @Override
     public void handleRequest(String condition){
         if(condition.equals("ConcreteHandler1")){
             System.out.println("ConcreteHandler1 handled");
         }else{
             successor.handleRequest(condition);
         }
     }
 }
 public class ConcreteHander2 extends Handler{
     @Override
     public void handleRequest(String condition){
         if(condition.equals("ConcreteHandler2")){
             System.out.println("ConcreteHandler2 handled");
         }else{
             successor.handleRequest(condition);
         }
     }
 }
 public class Client{
     public static void main(String[] args){
         //构造一个ConcreteHandler1对象
         ConcreteHandler1 handler1=new ConcreteHandler1();

         //构造一个ConcreteHandler2对象
         ConcreteHandler1 handler2=new ConcreteHandler2();

         //设置Handler1的下一个节点
         handler1.successor=handler2;

         //设置Handler2的下一个节点
         handler2.successor=handler1;

         //处理请求
         handler1.handleRequest("ConcreteHandler2");
     }
 }

状态模式和策略模式的区别



← Android源码设计模式_7命令模式 Android源码设计模式_5状态模式 →

Powered by Hexo, Theme designs by @hpcslag.
Style-Framework Tocas-UI designs by @yamioldmel