ホームページ >php教程 >php手册 >PHP デザインモード Decorator (装飾モード)

PHP デザインモード Decorator (装飾モード)

WBOY
WBOYオリジナル
2016-06-13 12:07:44799ブラウズ

コードをコピー コードは次のとおりです:


/**
* 装飾モード
*
* オブジェクトに追加の責任を動的に追加します。これは、拡張機能の点でサブクラスを生成するよりも柔軟です
*/
header(" Content-type:text/html;charset=utf-8");
抽象クラス MessageBoardHandler
{
パブリック関数 __construct(){}
抽象パブリック関数フィルター($msg) ;
}

class MessageBoard extends MessageBoardHandler
{
public function filter($msg)
{
return "メッセージボードのコンテンツを処理します|".$msg ;
}
}

$obj = new MessageBoard();
echo $obj->filter("装飾モードを必ず学習してください
");

// --- 以下はデコレーション モードの使用法です ----
class MessageBoardDecorator extends MessageBoardHandler
{
private $_handler = null; function __construct($handler)
{
parent::__construct();
$this->_handler = $handler;

パブリック関数フィルター($msg)
{
return $this->handler->filter($msg);
}
}

// フィルタ html
class HtmlFilter extends MessageBoardDecorator
{
パブリック関数 __construct ($handler)
{
parent::__construct($handler)
}

パブリック関数 filter($msg)
; 🎜>return "Filter out HTML tags |".parent::filter($msg);; // この時点では処理を行わずにテキストを追加するだけです。
}
}

// 機密性の高い単語をフィルターします
class SensitiveFilter extends MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler)
}

public function filter( $msg)
{
return "センシティブな単語をフィルタリング|".parent::filter($msg); // センシティブな単語をフィルタリングする処理は追加するだけです現時点では処理されていないテキスト
}
}

$obj = new HtmlFilter(new SensitiveFilter(new MessageBoard()));
echo $obj->filter("必ずデコレーション モードを学ぶには!
" );


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。