Heim  >  Artikel  >  Backend-Entwicklung  >  Häufig verwendete Designmuster – Chain-of-Responsibility-Muster und seine PHP-Implementierung

Häufig verwendete Designmuster – Chain-of-Responsibility-Muster und seine PHP-Implementierung

伊谢尔伦
伊谢尔伦Original
2016-12-01 11:44:151151Durchsuche

Das Verantwortungskettenmodell ist ein Verhaltensmodell, das einige Befehlsobjekte und eine Reihe von Verarbeitungsobjekten enthält. Jedes Handler-Objekt bestimmt, welche Befehlsobjekte es verarbeiten kann, und es weiß auch, wie Befehlsobjekte, die es nicht verarbeiten kann, an das nächste Handler-Objekt in der Kette übergeben werden. Das Muster beschreibt auch Methoden zum Hinzufügen neuer Verarbeitungsobjekte am Ende der Verarbeitungskette.

Hauptrolle

Abstrakte Verantwortungsrolle: Definiert die öffentlichen Methoden, die von allen Verantwortlichkeiten unterstützt werden.

Konkrete Verantwortungsrolle: Konkrete Verantwortung, implementiert durch abstrakte Verantwortungsschnittstelle

Kette der Verantwortungsrolle: Legen Sie die Aufrufregeln der Verantwortung fest

Klassenbild

Häufig verwendete Designmuster – Chain-of-Responsibility-Muster und seine PHP-Implementierung

Beispiel

<?php
abstract class Responsibility { // 抽象责任角色
    protected $next; // 下一个责任角色
 
    public function setNext(Responsibility $l) {
        $this->next = $l;
        return $this;
    }
    abstract public function operate(); // 操作方法
}
 
class ResponsibilityA extends Responsibility {
    public function __construct() {}
    public function operate(){
        if (false == is_null($this->next)) {
            $this->next->operate();
        }
    };
}
class ResponsibilityB extends Responsibility {
    public function __construct() {}
    public function operate(){
        if (false == is_null($this->next)) {
            $this->next->operate();
        }
    };
}
 
$res_a = new ResponsibilityA();
$res_b = new ResponsibilityB();
$res_a->setNext($res_b);
?>


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