快速學習C 設計模式之職責鏈模式

2022-09-26 02:15:09 字數 1105 閱讀 3652

職責鏈模式簡介及uml

職責鏈也叫責任鏈,他是一種行為型模式,它為請求建立了乙個接收請求者物件的鏈,並將請求沿著這條鏈傳遞到目標物件去處理。

該模式最簡單的實現方式就是運用黎克特制替換原則,對每個職責所持有的物件進行抽象,並使得每個職責物件都擁有共同的父類,通過對外提bvsmtb供出具有一般意義的介面。

範例該範例,是我在對微服務中,服務發現的容錯性進行處理的一種處理方案,考慮到服務發現過程中,如果註冊中心宕機,那麼可以使用本地檔案存放的臨時性資訊,如果本地檔案不存在,那麼就直接用內容中存放的資訊。在整個流程中,我從註冊中心獲取服務資訊,然後寫入到檔案中,最終存放到記憶體。

處理者抽象類

internal abstract class tolerancehandler

public abstract task>> handlerrequestasync(int request);

}服務中心處理

internal class consulhandler : tolerancehandler

else

}}檔案處理

internal class filehandler:tolerancehandler

else

}}記憶體處理

internal class inmemoryhandler : tolerancehandler

return await this.handler.handlerrequestasync(request);

}}客戶端呼叫

public async task> getservice(string servicename)

客戶端呼叫優缺點

優點:1、職責鏈模式將請求的傳送者與接收者剝離開來,實現了雙方的解耦,而解耦後的最佳效果就是,雙方關於自有功能的定製更加簡單,修改產生的影響也大大減輕。

2、傳送方呼叫時,無需知道鏈的結構,只需要設定好鏈路結構即可。

3、可以利用鏈路的組合特性,實現職責鏈組合的配置化,當然需要額外編寫控制**

缺點1、可能會導致類檔案過多,當然也有人說職責鏈會在一定程度上對系統的效能造成不利影響,不過這條我認為可以忽略,因為從系統維護的角度來說,這點犧牲是允許的。

2、如果編寫不注意,極有可能導致迴圈呼叫

C 設計模式之職責鏈模式

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

C 設計模式之 職責鏈模式

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

C 設計模式之職責鏈

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