コードをコピーします コードは次のとおりです:
/**
* デコレーション モード
*
* オブジェクトにいくつかの追加の責任を動的に追加します。これは、拡張機能の点でサブクラスを生成するよりも柔軟です
*/
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.comtruehttp://www.bkjia.com/PHPjc/323785.html技術記事次のようにコードをコピーします: ?php /*** デコレーション モード * * オブジェクトに追加の役割を動的に追加します。これは、拡張機能の点でサブクラスを生成するよりも柔軟です。*/ header("Content...