ホームページ >バックエンド開発 >PHPチュートリアル >PHPデザインパターン Decorator(デコレーションモード)_PHPチュートリアル

PHPデザインパターン Decorator(デコレーションモード)_PHPチュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-21 15:27:23817ブラウズ

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

/**
* デコレーション モード
*
* オブジェクトにいくつかの追加の責任を動的に追加します。これは、拡張機能の点でサブクラスを生成するよりも柔軟です
*/
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 "メッセージボード | ".$msg;
}
}

$obj = new MessageBoard();
echo $obj->filter("必ずデコレーションモードを学習してください
");

// --- 以下はデコレーション モードの使用方法です ----
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);
}
}

// html
class HtmlFilter extends MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler)
}

public function filter($msg)
{
return "HTML タグをフィルタリングする|" .parent::filter($msg );; // HTML タグの処理を除外します
}
}

// デリケートな単語をフィルタリングします
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("必ず学習してください)デコレーションモード!

http://www.bkjia.com/PHPjc/323785.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/323785.html技術記事次のようにコードをコピーします: ?php /*** デコレーション モード * * オブジェクトに追加の役割を動的に追加します。これは、拡張機能の点でサブクラスを生成するよりも柔軟です。*/ header("Content...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。