C 設計模式之 職責鏈模式

2021-08-28 07:02:19 字數 1563 閱讀 4124

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

處理請求 "

, this.

gettype()

.name, request);}

else

if(successor != null)}}

class concretehandler2 : handler

處理請求 "

, this.

gettype()

.name, request);}

else

if(successor != null)}}

class concretehandler3 : handler

處理請求 "

, this.

gettype()

.name, request);}

else

if(successor != null)}}

// test

handler h1 = new concretehandler1()

;handler h2 = new concretehandler2()

;handler h3 = new concretehandler3()

;h1.

setsuccessor

(h2)

;h2.

setsuccessor

(h3)

;int

requests =

;foreach (

int request in requests)

// result

concretehandler1 處理請求 2

concretehandler1 處理請求 5

concretehandler2 處理請求 14

concretehandler3 處理請求 22

concretehandler2 處理請求 18

concretehandler1 處理請求 3

concretehandler3 處理請求 27

concretehandler3 處理請求 20

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

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

C 設計模式之職責鏈模式

前言 最近心情很差,因為生活,因為工作 所以想請幾天假去麗江玩玩。就向專案經理提交了休假申請,我的專案經理向專案主管提交了我的休假申請,專案主管向部門經理提交了我的休假申請 最後,部門經理同意了我的休假申請。是的,乙個簡單的休假申請,需要這麼複雜的流程,這也是乙個公司保證它正常執行的必要。如果部門經...

C 設計模式之職責鏈

iron之職責鏈 需求 iron 的建造一直沒有停止,現在單個部件是有的,但是在部件從工廠裡出來的時候,在組裝到一起之前,我們還是非常有必要對部件進行質量檢測,或者是其它個方面的檢測,又或者是設定部件標識資訊等等,這些操作可以是有序的 也可以是無序的 現在為了實現上面的所講的功能來進行演示,然過程中...

設計模式之職責鏈模式

如果我們現在有乙個需求,乙個人他生了病,這個病要在 醫院才能看,但是這個病人並不清楚,就先去了一級醫院,一級醫院的醫生告訴他你的病要去二級醫院看,二級醫院也告訴他 你的病我這裡看不了,你要去 醫院才能看,最後他去 醫院把病看好了.這個過程直接寫成 class patient this.patient...