設計模式 責任鏈模式

2021-10-11 16:17:52 字數 1961 閱讀 8146

#include

"iostream"

#include

"string"

#include

"list"

using

namespace std;

//請求,票據

class

bill

bill

(int nid, string strname,

double daccount)

:m_nid

(nid)

,m_strname

(strname)

,m_daccount

(daccount)

double

getaccount()

void

printinfo()

public

:int m_nid;

string m_strname;

double m_daccount;};

//抽象處理者

class

(string strname)

:m_strname

(strname)

//新增上級

void

setsuperior

//處理請求

virtual

void

handlerequest

(bill *)=

0;string getname()

void

setname

(string name)

protected

:private

: string m_strname;};

//具體處理者 組長

class

groupleader

:groupleader

(string strname)

void

handlerequest

(bill *bill)

else}}

;//具體處理者 主管

class

headleader

:headleader

(string strname)

void

handlerequest

(bill *bill)

else}}

;//具體處理者 經理

class

managerleader

:managerleader

(string strname)

void

handlerequest

(bill *bill)

else}}

;//具體處理者 老闆

class

bossleader

:bossleader

(string strname)

void

handlerequest

(bill *bill)

};

int

main()

執行結果:

組長:小柒 處理了該票據

票據資訊:id:1 name:kyle account:6

組長無權處理,轉交上級……

主管:小捌 處理了該票據

票據資訊:id:2 name:kyle account:15

組長無權處理,轉交上級……

主管無權處理,轉交上級……

經理:小玖 處理了該票據

票據資訊:id:3 name:kyle account:40

組長無權處理,轉交上級……

主管無權處理,轉交上級……

經理無權處理,轉交上級……

老闆:老拾 處理了該票據

票據資訊:id:4 name:kyle account:100

請按任意鍵繼續.

..

設計模式

設計模式 責任鏈模式

定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...

設計模式 責任鏈模式

責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。抽象的請求處理者 author wly public abstract cl...

設計模式 責任鏈模式

責任鏈模式 chain ofresponsibility pattern 基本概念 責任鏈,顧名思義,是指乙個負責相應請求的行為鏈。首先要理解的是乙個鏈,然後通過這個鏈來管理個行為。什麼時候會用到責任鏈 對於乙個請求,沒有特別指明由誰處理或沒有指明如何處理。此時可以使用責任鏈的形式,用過將各種處理行...