Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Designmodus Decorator (Dekorationsmodus)

PHP-Designmodus Decorator (Dekorationsmodus)

高洛峰
高洛峰Original
2016-11-30 09:36:351241Durchsuche

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!
");

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn