您的位置 首页 php

PHP设计模式之职责链模式

职责链模式属于行为型模式

概述:为解除请求的发送者和接收者之间的耦合, 将这些对象连成一条链, 并沿着这条链传递该请求, 直到有一个对象处理它, 而使用多个对象都用机会处理这个请求

<?php

/**

*职责链抽象类

*/

abstract class Chain{

public $chain;

public function setChain($chain){

$this->chain = $chain;

}

public function handleRequest($request){}

}

<?php

/**

*职责链一号

*计算值是否为0

*/

class ChainZero extends Chain{

public function handleRequest($num){

if($num == 0){

echo ‘此数为0 职责链停止<br/>’;

}else{

echo ‘zero<br/>’;

$this->chain->handleRequest($num);

}

}

}

<?php

/**

*职责链一号

*计算值是否为奇数

*/

class ChainEven extends Chain{

public function handleRequest($num){

if($num%2 == 1){

echo ‘此数为奇数 职责链停止<br/>’;

}else{

echo ‘even<br/>’;

$this->chain->handleRequest($num);

}

}

}

<?php

/**

*职责链一号

*计算值是否为偶数

*/

class ChainOdd extends Chain{

public function handleRequest($num){

if($num%2 != 1){

echo ‘此数为偶数 职责链停止<br/>’;

}else{

echo ‘odd<br/>’;

$this->chain->handleRequest($num);

}

}

}

<?php

/**

*职责链模式

*/

public function actionChain(){

Yii::import(‘ext.chain.*’);

$chainZero = new ChainZero();

$chainEven = new ChainEven();

$chainOdd = new ChainOdd();

$chainZero->setChain($chainEven);

$chainEven->setChain($chainOdd);

foreach(array(2,3,4,5,0) as $num)

{

$chainZero->handleRequest($num);

}

}

文章来源:智云一二三科技

文章标题:PHP设计模式之职责链模式

文章地址:https://www.zhihuclub.com/154214.shtml

关于作者: 智云科技

热门文章

网站地图