PHP 責任鏈模式

2021-07-24 16:40:36 字數 1357 閱讀 1518

使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者指間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。

責任鏈模式非常顯著的優點是將請求和處理分開。請求者可以不用知道是誰處理的,處理者可以不用知道請求的全貌,兩者解耦,提高系統的靈活性。

鏈中節點數量需要控制,避免出現超長鏈的情況,一般的做法是在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...