Code kopieren Der Code lautet wie folgt:
/**
* Dekorationsmodus
*
* Fügt einem Objekt dynamisch einige zusätzliche Verantwortlichkeiten hinzu, was im Hinblick auf die erweiterte Funktionalität flexibler ist als die Generierung von Unterklassen
*/
header("Content-type:text/html;charset=utf-8") ;
abstrakte Klasse MessageBoardHandler
{
öffentliche Funktion __construct(){}
abstrakte öffentliche Funktion filter($msg);
Klasse MessageBoard erweitert MessageBoardHandler
{
public function filter($msg)
{
return „Verarbeitung des Inhalts im Message Board|“.$msg;
}
$obj = new MessageBoard() ;
echo $obj->filter("Achten Sie darauf, den Dekorationsmodus zu lernen
");
/ --- Das Folgende ist die Verwendung des Dekorationsmodus ----
Klasse MessageBoardDecorator erweitert MessageBoardHandler
{
private $_handler = null;
public function __construct($handler)
{
parent::__construct() ;
$this- >_handler = $handler;
}
public function filter($msg)
{
return $this->_handler->filter( $msg);
}
}
// Filter html
class HtmlFilter erweitert MessageBoardDecorator
{
public function __construct($handler)
{
parent::__construct($handler );
}
public function filter($msg)
{
return „HTML-Tags herausfiltern|“.parent::filter($msg) ;; // HTML herausfiltern Bei der Verarbeitung von Tags wird zu diesem Zeitpunkt lediglich Text ohne Verarbeitung hinzugefügt
}
}
// Filtern sensibler Wörter
Klasse SensitiveFilter erweitert MessageBoardDecorator
{
public function __construct($ handler)
{
parent::__construct($handler);
}
public function filter($msg)
{
return „Sensible Wörter herausfiltern|“ .parent::filter($msg); // Zu diesem Zeitpunkt einfach Text ohne Verarbeitung hinzufügen
}
$obj = new HtmlFilter(new SensitiveFilter( new MessageBoard()));
echo $obj->filter("Achten Sie darauf, den Dekorationsmodus zu lernen!
");