14 行為型模式 職責鏈模式

2021-09-22 08:36:57 字數 1203 閱讀 8175

模式動機(chain of responsibility pattern)對於某個請求,有多個接收者都可能處理,將這樣的接收者鏈結成乙個單向鍊錶,根據不同的請求型別決定最終由哪個結點負責處理。不同結點需要維護乙個指向下乙個結點的鏈結,該鏈結可以通過構造結點時傳入,也可以通過結點介面指定下乙個接收結點。抽象類負責定義公共介面及其預設實現。

模式結構圖:

模式**:

bt_職責鏈模式.h:

#ifndef rp_h

#define rp_h

#include using namespace std;

/* 抽象處理介面

*/class handler

void setsuccessor(handler* successor)

virtual void handlerequest(int requestnum)

private:

handler* successor;

};/*

具體處理類a,處理範圍:< 100

*/class concretehandlera : public handler

}};/*

具體處理類b,處理範圍:< 200

*/class concretehandlerb : public handler

}};/*

具體處理類c,處理範圍:整個int範圍

*/class concretehandlerc : public handler

};#endif // rp_h

#include "bt_職責鏈模式.h"

int main()

模式分析:當系統中有多個物件可以處理某類請求時,適合使用職責鏈模式。該模式中,抽象類負責定義處理請求的公共介面,鏈中的具體處理結點負責處理客戶請求。當前乙個結點不能處理時,將請求傳遞到下乙個結點中,依次類推。主要優點是降低了系統的耦合性,缺點是在比較長的職責鏈中,響應速度可能比較慢。

行為型模式 職責鏈模式

職責鏈模式 chain of responsibility pattern 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。職責鏈模式是一種物件行為型模式。它定義了乙個處理請求的介面,一般設計為抽象類,由於不同的具體...

無廢話設計模式(20)行為型模式 職責鏈模式

職責鏈模式定義 使多個物件都有機會處理請求,從而避免請求的傳送者喝接受者之間的耦合關係。將這個物件連成一條鏈,並沿這條鏈傳遞該請求,直到有乙個物件處理它為止。1 1 簡單uml圖 1 2 實現 1 處理請求的抽象父類 abstract class handler b 處理方法 public abst...

設計模式 行為型模式 職責鏈模式

採購單 請求類 class purchaserequest public void setamount double amount public double getamount public void setnumber int number public int getnumber public...