码迷,mamicode.com
首页 > 其他好文 > 详细

责任链模式

时间:2017-10-28 15:33:00      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:func   fun   www   ble   对象   eal   level   end   dea   

责任链模式:

请求方发起请求,接收方接受请求,并解决请求方的问题,如果接收方不能解决问题,则将请求传给下一个接收方(上一级),让下一个接收方来解决问题,以此类推,发起请求方并不关心是谁解决了问题,只关心是否解决了问题。

<?php  
	class Admin{
		public $top="";
		public $level=0;
		public function __construct(){ }

		public function ToDo(){}

		public function deal($level){
			if($level <= $this->level){
				//如果当前类能够解决问题,则直接让当前类解决,不用传递给上级
				$this->ToDo();
			} else {
				//如果当前类的等级不够(不能解决问题),则将问题传递给上一级
				//即生成一个上级类,然后调用上级类的方法来解决问题,层层深入,直到解决问题
				//top属性初始为上级类名
				//将新生成的上级类的实例化对象赋给top属性
				$this->top= new $this->top;
				$this->top->deal($level);
			}
		}
	}

	class PersonOne extends Admin{
		public $level=1;
		public $top="PersonTwo";
		public function ToDo(){
			echo "the problem has been solved by PersonOne\n";
		}
	}

	class PersonTwo extends Admin{
		public $level=2;
		public $top="PersonThree";
		public function ToDo(){
			echo "the problem has been solved by PersonTwo\n";
		}
	}

	class PersonThree extends Admin{
		public $level=3;
		public $top=__CLASS__;
		public function ToDo(){
			echo "the problem has been solved by PersonThree\n";
		}

	}

	$level=1;
	$d=new PersonOne();
	$d->deal($level);

	$level=2;
	$d=new PersonOne();
	$d->deal($level);

	$level=3;
	$d=new PersonOne();
	$d->deal($level);
?>

  参考 责任链 | 菜鸟教程  http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html

 

责任链模式

标签:func   fun   www   ble   对象   eal   level   end   dea   

原文地址:http://www.cnblogs.com/-beyond/p/7746948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!