php設(shè)計(jì)模式 Chain Of Responsibility (職責(zé)鏈模式)
更新時(shí)間:2011年06月26日 10:38:23 作者:
為解除請(qǐng)求的發(fā)送者和接收者之間的耦合,而使用多個(gè)對(duì)象都用機(jī)會(huì)處理這個(gè)請(qǐng)求,將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它
復(fù)制代碼 代碼如下:
<?php
/**
* 職責(zé)鏈模式
*
* 為解除請(qǐng)求的發(fā)送者和接收者之間的耦合,而使用多個(gè)對(duì)象都用機(jī)會(huì)處理這個(gè)請(qǐng)求,將這些對(duì)象連成一條鏈,并沿著這條鏈傳遞該請(qǐng)求,直到有一個(gè)對(duì)象處理它
*
*/
abstract class Handler
{
protected $_handler = null;
public function setSuccessor($handler)
{
$this->_handler = $handler;
}
abstract function handleRequest($request);
}
class ConcreteHandlerZero extends Handler
{
public function handleRequest($request)
{
if($request == 0)
{
echo "0<br/>";
} else {
$this->_handler->handleRequest($request);
}
}
}
class ConcreteHandlerOdd extends Handler
{
public function handleRequest($request)
{
if($request % 2)
{
echo $request." is odd<br/>";
} else {
$this->_handler->handleRequest($request);
}
}
}
class ConcreteHandlerEven extends Handler
{
public function handleRequest($request)
{
if(!($request % 2))
{
echo $request." is even<br/>";
} else {
$this->_handler->handleRequest($request);
}
}
}
// 實(shí)例一下
$objZeroHander = new ConcreteHandlerZero();
$objEvenHander = new ConcreteHandlerEven();
$objOddHander = new ConcreteHandlerOdd();
$objZeroHander->setSuccessor($objEvenHander);
$objEvenHander->setSuccessor($objOddHander);
foreach(array(2,3,4,5,0) as $row)
{
$objZeroHander->handleRequest($row);
}
您可能感興趣的文章:
- PHP設(shè)計(jì)模式之責(zé)任鏈模式的深入解析
- PHP實(shí)現(xiàn)基于狀態(tài)的責(zé)任鏈審批模式詳解
- 簡(jiǎn)單介紹PHP的責(zé)任鏈編程模式
- PHP設(shè)計(jì)模式之觀察者模式(Observer)詳細(xì)介紹和代碼實(shí)例
- php設(shè)計(jì)模式 Proxy (代理模式)
- PHP常用的三種設(shè)計(jì)模式匯總
- php設(shè)計(jì)模式 Interpreter(解釋器模式)
- PHP經(jīng)典面試題之設(shè)計(jì)模式(經(jīng)常遇到)
- php設(shè)計(jì)模式之單例模式使用示例
- php 設(shè)計(jì)模式之 工廠模式
- php基礎(chǔ)設(shè)計(jì)模式大全(注冊(cè)樹模式、工廠模式、單列模式)
- php設(shè)計(jì)模式之職責(zé)鏈模式定義與用法經(jīng)典示例
相關(guān)文章
php數(shù)組函數(shù)序列之a(chǎn)rray_pop() - 刪除數(shù)組中的最后一個(gè)元素
定義和用法array_pop() 函數(shù)刪除數(shù)組中的最后一個(gè)元素。2011-11-11
php5.2的curl-bug 服務(wù)器被php進(jìn)程卡死問題排查
這篇文章主要介紹了php5.2的curl-bug 服務(wù)器被php進(jìn)程卡死問題排查,需要的朋友可以參考下2016-09-09
PHP用strstr()函數(shù)阻止垃圾評(píng)論(通過判斷a標(biāo)記)
假如你的網(wǎng)站垃圾評(píng)論很多,大部分垃圾評(píng)論是帶鏈接的,因?yàn)橐黾臃聪蜴溄勇?,所以你可以使用下面的小技巧來杜絕這些帶鏈接的垃圾評(píng)論2013-09-09
學(xué)習(xí)php過程中的一些注意點(diǎn)的總結(jié)
在學(xué)習(xí)php的過程中會(huì)有一些細(xì)節(jié)是需要注意的,本文整理了一些比較實(shí)際的問題,希望對(duì)大家有所幫助2013-10-10
關(guān)于PHP5和PHP7中數(shù)組實(shí)現(xiàn)方式的比較總結(jié)
PHP7比PHP5性能提升了兩倍,全面一致的64位支持,以前的許多致命錯(cuò)誤,現(xiàn)在改成拋出異常,下面這篇文章主要給大家介紹了關(guān)于PHP5和PHP7中數(shù)組實(shí)現(xiàn)方式比較的相關(guān)資料,需要的朋友可以參考下2021-09-09
php實(shí)現(xiàn)批量刪除掛馬文件及批量替換頁面內(nèi)容完整實(shí)例
這篇文章主要介紹了php實(shí)現(xiàn)批量刪除掛馬文件及批量替換頁面內(nèi)容的方法,涉及php文件與目錄的遍歷、查找以及字符串與數(shù)組的遍歷與替換操作相關(guān)技巧,適用于utf-8編碼環(huán)境,需要的朋友可以參考下2016-07-07

