责任链模式

原创 2004年08月25日 21:32:00
 
很多的对象由每一个对象对其下家的引用而联接起来形成一条
请求在这个链上传递,直到链上的某一个对象决定处理此请求。
发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求.
责任链可能是一条直线、一个环链甚至一个树结构的一部分。

 

可以用“击鼓传花”这个例子来了解
击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,由贾赦传给贾政,由贾政传给贾宝玉,又由贾宝玉传给贾环,由贾环传回给贾母,如此往复(见下图)。当鼓声停止时,手中有花的人就得执行酒令 .

 
参与者-抽象
abstract class Player {
  abstract public void handle(int i);//处理方法
       private Player successor;
  public Player() { successor = null;}
     protected void setSuccessor(Player aSuccessor) {
      successor = aSuccessor;
      }
     public void next(int index) {//传递方法

      if( successor != null ) {
    successor.handle(index);
     }
      else {
    System.out.println("Program terminated.");
     }
   }
}

 

参与者-具体(贾家参与者)

class JiaMu extends Player {
   public JiaMu(Player aSuccessor) {
    this.setSuccessor(aSuccessor);
   }
   public void handle(int i) {
    if( i == 1 ) {
     System.out.println("Jia Mu gotta drink!");
    }
    else {
     System.out.println("Jia Mu passed!");
                    next(i);
    }
   }
  }
 
 击鼓传花者(客户端)
public class DrumBeater {
  private static Player player;
  static public void main(String[] args)
   {
    player = new JiaMu( new JiaShe( new
               JiaZheng( new JiaBaoYu(new                 
                JiaHuan(null)))));
    player.handle(4);
   }
}

版权声明:本文为博主原创文章,转载请注明来源。

责任链模式的7种不同实现

引言责任链模式是经典的GoF 23种设计模式之一,也许你已经了解这种模式。不管你是否熟悉,建议读者在阅读本文之前,不妨先思考下面三个问题: 1. 如何用多种风格迥异的编程范式来实现责任链模式? ...
  • liuwenzhe2008
  • liuwenzhe2008
  • 2017年04月19日 13:32
  • 1911

Java设计模式之责任链模式、职责链模式

继续介绍23种设计模式系列,本文介绍的是职责链模式。
  • jason0539
  • jason0539
  • 2015年04月18日 07:41
  • 23732

Android设计模式-责任链模式

1. 模式介绍 模式的定义 一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。 模式的使用场景 一个请求可以被多个处理者处理或处理者未明确指定时。 2. ...
  • u014675538
  • u014675538
  • 2016年03月16日 15:47
  • 1172

责任链模式学习

  • 2014年11月19日 00:47
  • 2KB
  • 下载

责任链模式小demo

  • 2015年01月05日 22:57
  • 12KB
  • 下载

责任链模式Demo

  • 2015年12月05日 16:43
  • 15KB
  • 下载

java责任链模式的财务审批功能实现

  • 2013年04月10日 20:42
  • 298KB
  • 下载

责任链模式-文档+源码

  • 2015年12月30日 11:30
  • 1.06MB
  • 下载

责任链模式demo

  • 2015年01月05日 23:02
  • 11KB
  • 下载

java 责任链模式 可以累积前一步操作结果和参数

  • 2015年11月25日 13:47
  • 11KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:责任链模式
举报原因:
原因补充:

(最多只允许输入30个字)