责任链模式

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

 

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

 
参与者-抽象
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);
   }
}

阅读更多
版权声明:本文为博主原创文章,转载请注明来源。 https://blog.csdn.net/yizdream/article/details/84774
文章标签: class null string 游戏
个人分类: JAVA 设计模式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭