php設(shè)計(jì)模式 Decorator(裝飾模式)
更新時(shí)間:2011年06月26日 11:21:59 作者:
動(dòng)態(tài)的給一個(gè)對(duì)象添加一些額外的職責(zé),就擴(kuò)展功能而言比生成子類(lèi)方式更為靈活
復(fù)制代碼 代碼如下:
<?php
/**
* 裝飾模式
*
* 動(dòng)態(tài)的給一個(gè)對(duì)象添加一些額外的職責(zé),就擴(kuò)展功能而言比生成子類(lèi)方式更為靈活
*/
header("Content-type:text/html;charset=utf-8");
abstract class MessageBoardHandler
{
public function __construct(){}
abstract public function filter($msg);
}
class MessageBoard extends MessageBoardHandler
{
public function filter($msg)
{
return "處理留言板上的內(nèi)容|".$msg;
}
}
$obj = new MessageBoard();
echo $obj->filter("一定要學(xué)好裝飾模式<br/>");
// --- 以下是使用裝飾模式 ----
class MessageBoardDecorator extends MessageBoardHandler
{
private $_handler = null;
public function __construct($handler)
{
parent::__construct();
$this->_handler = $handler;
}
public function filter($msg)
{
return $this->_handler->filter($msg);
}
}
// 過(guò)濾html
class HtmlFilter extends MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler);
}
public function filter($msg)
{
return "過(guò)濾掉HTML標(biāo)簽|".parent::filter($msg);; // 過(guò)濾掉HTML標(biāo)簽的處理 這時(shí)只是加個(gè)文字 沒(méi)有進(jìn)行處理
}
}
// 過(guò)濾敏感詞
class SensitiveFilter extends MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler);
}
public function filter($msg)
{
return "過(guò)濾掉敏感詞|".parent::filter($msg); // 過(guò)濾掉敏感詞的處理 這時(shí)只是加個(gè)文字 沒(méi)有進(jìn)行處理
}
}
$obj = new HtmlFilter(new SensitiveFilter(new MessageBoard()));
echo $obj->filter("一定要學(xué)好裝飾模式!<br/>");
您可能感興趣的文章:
- PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例
- PHP設(shè)計(jì)模式之裝飾者模式
- 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)裝飾器模式(decorator)
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)組合模式與裝飾模式詳解
- PHP設(shè)計(jì)模式之裝飾器模式定義與用法詳解
- php適配器模式簡(jiǎn)單應(yīng)用示例
- php橋接模式應(yīng)用案例分析
- php 策略模式原理與應(yīng)用深入理解
- php設(shè)計(jì)模式之工廠(chǎng)模式用法經(jīng)典實(shí)例分析
- php設(shè)計(jì)模式之觀察者模式定義與用法經(jīng)典示例
- php設(shè)計(jì)模式之職責(zé)鏈模式定義與用法經(jīng)典示例
- php裝飾者模式簡(jiǎn)單應(yīng)用案例分析
相關(guān)文章
PHP與MySQL開(kāi)發(fā)的8個(gè)技巧小結(jié)
LAMP 架構(gòu)的網(wǎng)站,我以前注重的多是安裝/配置方面的,講述開(kāi)發(fā)的相對(duì)較少,因?yàn)樽约簭氖麻_(kāi)發(fā)也少。看了以后,頗有啟發(fā),以前開(kāi)發(fā)中遇到的一些問(wèn)題,迎刃而解。所以翻譯出來(lái)和大家共享。2010-12-12
php正則表達(dá)式(regar expression)
在編寫(xiě)處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的語(yǔ)法。2011-09-09
PHP實(shí)現(xiàn)動(dòng)態(tài)刪除XML數(shù)據(jù)的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)動(dòng)態(tài)刪除XML數(shù)據(jù)的方法,在前面介紹的Message_XML類(lèi)基礎(chǔ)上進(jìn)行改進(jìn),增加了xml刪除功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03
PHP簡(jiǎn)單判斷字符串是否包含另一個(gè)字符串的方法
這篇文章主要介紹了PHP簡(jiǎn)單判斷字符串是否包含另一個(gè)字符串的方法,實(shí)例分析了PHP通過(guò)自定義函數(shù)實(shí)現(xiàn)字符串包含的判斷,涉及PHP中explode函數(shù)分隔符的使用與判定技巧,需要的朋友可以參考下2016-03-03
php實(shí)現(xiàn)excel中rank函數(shù)功能的方法
這篇文章主要介紹了php實(shí)現(xiàn)excel中rank函數(shù)功能的方法,較為詳細(xì)的分析了rank函數(shù)的功能及具體實(shí)現(xiàn)方法,需要的朋友可以參考下2015-01-01
php下獲取http狀態(tài)的實(shí)現(xiàn)代碼
在項(xiàng)目開(kāi)發(fā)中,有時(shí)我們需要知道遠(yuǎn)程的URL地址是否能訪(fǎng)問(wèn)正常,判斷其正常與否后進(jìn)行下一步的操作,那么在PHP中如何獲取遠(yuǎn)程HTTP的狀態(tài)呢2014-05-05
PHP中使用glob函數(shù)實(shí)現(xiàn)一句話(huà)刪除某個(gè)目錄下的所有文件
這篇文章主要介紹了PHP中使用glob函數(shù)實(shí)現(xiàn)一句話(huà)刪除某個(gè)目錄下的所有文件,重點(diǎn)在glob函數(shù)的使用上,需要的朋友可以參考下2014-07-07

