每日一模式之观察者模式

<?php
//观察者模式: 经过注册对象去批量改变对象的状态
//好比跑男,导演说规则有变化;红队和蓝队都作出了调整

interface TeamInteface{
	public function action();
}

class ReadTeam implements TeamInteface{
	public function action(){
		echo "红队在行动\n";
	}
}

class BlueTeam implements TeamInteface{
	public function action(){
		echo "蓝队在行动\n";
	}
}


class Direct{
	private $_list = array();

    public function add(TeamInteface $obj){
        $this->_list[] = $obj;
    }

    public function ruleChangeOld(){
    	echo "传统改变\n";
    }

	public function ruleChange(){
		echo "新改变\n";
		foreach($this->_list as $v){
			$v->action();
		}
	}
}

//传统方式,每次有更改都要作些
$dir_obj_old = new Direct();
$dir_obj_old->ruleChangeOld();
$read_obj = new ReadTeam();
$read_obj->action();
$blue_obj = new BlueTeam();
$read_obj->action();


//是否是代码量减小了一些哦
$dir_obj = new Direct();
$dir_obj->add(new ReadTeam());
$dir_obj->add(new BlueTeam());
$dir_obj->ruleChange();
相关文章
相关标签/搜索