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
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); ?>