使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者指間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。責任鏈模式非常顯著的優點是將請求和處理分開。請求者可以不用知道是誰處理的,處理者可以不用知道請求的全貌,兩者解耦,提高系統的靈活性。
鏈中節點數量需要控制,避免出現超長鏈的情況,一般的做法是在handler中設定乙個最大節點數量,在setnext方法中判斷是否已經超過其閾值,超過則不允許該鏈建立,避免無意識地破壞系統效能。
<?php
/** * 責任鏈模式
*/namespace
pattern;
abstract
class
handler
public
function
handlerequest
(request $request) else else }}
abstract
public
function
getlevel
();abstract
public
function
operate
();}
final
class
concreteone
extends
handler
public
function
operate
() }
final
class
concretetwo
extends
handler
public
function
operate
() }
final
class
concretethree
extends
handler
public
function
operate
() }
class
request
public
function
getrequestlevel
() }
$one = new concreteone();
$two = new concretetwo();
$three = new concretethree();
$one->setnext($two);
$two->setnext($three);
$response = $one->handlerequest(new request());
php中責任鏈模式
參考 又叫職責鏈模式。包含了一些命令物件和一些處理物件,每個處理物件決定它能處理哪些命令物件,它也知道應該把自己不能處理的命令物件交下乙個處理物件,該模式還描述了往該鏈新增新的處理物件的方法。示例情景一 當使用者發布乙個帖子時 如果版主可以決定,就版主處理 如果版主不能決定,就交給上一級管理員處理 ...
PHP 設計模式 責任鏈
責任鏈模式 chain of responsibility pattern 為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。在這種模式中,通常每個接收者都包含對另乙個接收者的引用。如果乙個物件不能處理該請求,那麼它會把相同的請...
PHP設計模式 責任鏈模式
這種模式有另一種稱呼 控制鏈模式。它主要由一系列對於某些命令的處理器構成,每個查詢會在處理器構成的責任鏈中傳遞,在每個交匯點由處理器判斷是否需要對它們進行響應與處理。每次的處理程式會在有處理器處理這些請求時暫停。abstract class responsibility abstract publi...