php設(shè)計模式 Chain Of Responsibility (職責鏈模式)
更新時間:2011年06月26日 10:38:23 作者:
為解除請求的發(fā)送者和接收者之間的耦合,而使用多個對象都用機會處理這個請求,將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它
復(fù)制代碼 代碼如下:
<?php
/**
* 職責鏈模式
*
* 為解除請求的發(fā)送者和接收者之間的耦合,而使用多個對象都用機會處理這個請求,將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它
*
*/
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);
}
}
}
// 實例一下
$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è)計模式之責任鏈模式的深入解析
- PHP實現(xiàn)基于狀態(tài)的責任鏈審批模式詳解
- 簡單介紹PHP的責任鏈編程模式
- PHP設(shè)計模式之觀察者模式(Observer)詳細介紹和代碼實例
- php設(shè)計模式 Proxy (代理模式)
- PHP常用的三種設(shè)計模式匯總
- php設(shè)計模式 Interpreter(解釋器模式)
- PHP經(jīng)典面試題之設(shè)計模式(經(jīng)常遇到)
- php設(shè)計模式之單例模式使用示例
- php 設(shè)計模式之 工廠模式
- php基礎(chǔ)設(shè)計模式大全(注冊樹模式、工廠模式、單列模式)
- php設(shè)計模式之職責鏈模式定義與用法經(jīng)典示例
相關(guān)文章
php使用遞歸函數(shù)實現(xiàn)數(shù)字累加的方法
這篇文章主要介紹了php使用遞歸函數(shù)實現(xiàn)數(shù)字累加的方法,涉及php遞歸操作的技巧,需要的朋友可以參考下2015-03-03
php 驗證碼(傾斜,正弦干擾線,黏貼,旋轉(zhuǎn))
本篇文章是對php 驗證碼(傾斜,正弦干擾線,黏貼,旋轉(zhuǎn))進行了詳細的分析介紹,需要的朋友參考下2013-06-06
php中3種方法統(tǒng)計字符串中每種字符的個數(shù)并排序
3種方法,統(tǒng)計字符串中每種字符的個數(shù)并排序,多種解法喲~ str_split()函數(shù)很重要2012-08-08

