ホームページ  >  記事  >  バックエンド開発  >  一般的に使用される設計パターン - 責任連鎖パターンとその PHP 実装

一般的に使用される設計パターン - 責任連鎖パターンとその PHP 実装

伊谢尔伦
伊谢尔伦オリジナル
2016-12-01 11:44:151150ブラウズ

責任連鎖モデルは、いくつかのコマンド オブジェクトと一連の処理オブジェクトを含む動作モデルです。各ハンドラー オブジェクトは、どのコマンド オブジェクトを処理できるかを決定します。また、処理できないコマンド オブジェクトをチェーン内の次のハンドラー オブジェクトに渡す方法も認識します。このパターンでは、新しい処理オブジェクトを処理チェーンの最後に追加する方法も説明します。

主な役割

抽象的な責任の役割: すべての責任によってサポートされるパブリック メソッドを定義します。

具体的な責任ロール: 抽象的な責任インターフェイスで実装された具体的な責任

責任の連鎖ロール: 責任の呼び出しルールを設定する

クラス図

一般的に使用される設計パターン - 責任連鎖パターンとその PHP 実装

インスタンス

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


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。