大話設計模式 職責鏈模式

2021-06-07 23:52:02 字數 1294 閱讀 1315

1.當客戶提交乙個請求時,請求是沿鏈傳遞直至有乙個concretehandler物件負責處理它【dp】

2.接收者和傳送者都沒有對方的明確資訊,且鏈中的物件自己也並不知道鏈的結構。結果是職責鏈可簡化物件的相互連線,它們僅需保持乙個指向其後繼者的引用,而不需保持它所有的候選接受者的引用【dp】。

3.隨時隨地增加或修改處理乙個請求的結構。增強了給物件指派職責的靈活性【dp】。

4.乙個請求極有可能到了鏈的末端都得不到處理,或者因為沒有正確配置而得不到處理。

//定義乙個處理請示的介面

abstract class handler

//處理請求的抽象方法

public abstract function handlerequest($request);

}//具體處理者類,處理它所負責的請求,可訪問它的後繼者,如果可處理該請求,就處理之,否則就將該請求**給它的後繼者。

//concretehandler1,當請求數在0到10之間則有權處理,否則轉到下一位。

class concretehandler1 extends handler else if($this->successor != null) }}

//concretehandler2,當請求數在10到20之間則有權處理,否則轉到下一位。

class concretehandler2 extends handler else if($this->successor != null) }}

//concretehandler3,當請求數在20到30之間則有權處理,否則轉到下一位。

class concretehandler3 extends handler else if($this->successor != null) }}

$h1 = new concretehandler1();

$h2 = new concretehandler2();

$h3 = new concretehandler3();

//設定職責鏈上家與下家

$h1->setsuccessor($h2);

$h2->setsuccessor($h3);

$requests = array(2, 5, 14, 22, 18, 3, 27, 20);

//迴圈給最小處理者提交請求,不同數額,由不同許可權處理者處理

foreach($requests as $request)

《大話設計模式 職責鏈模式》筆記

1 職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。2 責任鏈模式結構圖 3 簡單 實現 handler類,定義乙個處理請示的介面。public a...

java 職責鏈模式(大話設計模式)

處理請求的介面 author administrator public abstract class handler public abstract void handlerequest int request 具體處理者類,處理它所負責的請求,可訪問它的後繼者,如果可處理該請求,則處理,否則轉給它...

大話設計模式(13)職責鏈模式

一 場景描述及uml圖 簡單概括 適用於串序指向的策略,如演算法流 a b c d e f,各個演算法依次指向,特定條件下某些演算法可能會跳過。二 概念 職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合。將這個物件連成一條...