設計模式 職責鏈

2021-06-19 22:34:37 字數 1185 閱讀 4540

一、功能

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

二、優缺點

客戶不知道它的請求將被哪個物件處理。

三、實現

有兩種實現思路。一種是自己先處理,處理不成功了再交給其他人處理。另一種是先交給別人處理,處理不成功了再自己處理。示例**如下節所示。

四、示例**

(1)示例一

namespace designpattern_chainofresponsibility

virtual

void handlerequest()

private:

handler *_successor ;

} ;// class concretehandler1

class concretehandler1 : public handler

virtual

void handlerequest()

} ;// class concretehandler2

class concretehandler2 : public handler

virtual

void handlerequest()

} ;}

(2)示例二

namespace designpattern_chainofresponsibility

virtual

bool handlerequest() //返回true表示處理成功,返回false表示處理失敗

private:

handler *_successor ;

} ;// class concretehandler1

class concretehandler1 : public handler

virtual

bool handlerequest()

return bhandled ;

} } ;

// class concretehandler2

class concretehandler2 : public handler

virtual

bool handlerequest()

return bhandled ;

} } ;

}

職責鏈 設計模式

知識點 職責鏈 chain of responsibility 知識內容 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。示例 includeusing namespace std typedef int...

設計模式 職責鏈模式

2008年08月17日 星期日 下午 04 28 using system using system.collections.generic using system.text public officer officer o public abstract void deal action a c...

設計模式 職責鏈模式

1 request.h ifndef request h define request h include include using namespace std class request 請求類定義 endif request h 2 manager.h ifndef manager h def...