設計模式(十六) 職責鏈模式

2021-09-26 02:40:33 字數 1296 閱讀 9984

定義:

主要解決:

如何解決:

以**為例

類圖關係如下:

定義用於處理請求的介面,並可選擇實現後繼鏈結

class handler

virtual void sethandler( handler *s )

virtual void handlerequest()

}// ...

private:

handler *successor;

};

處理他們負責的請求

/*---------------class concretehandler1-------------*/

class concretehandler1 : public handler

bool canhandle()

virtual void handlerequest()

else

// ...

} // ...

};/*--------------class concretehandler2----------------*/

class concretehandler2 : public handler

bool canhandle()

virtual void handlerequest()

else

// ...

} // ...

};

int main()

執行結果為

cannot be handled by handler 1

handled by handler 2

職責鏈模式的優缺點

優點:

​ 1、降低耦合度。它將請求的傳送者和接收者解耦。

​ 2、簡化了物件。使得物件不需要知道鏈的結構。

​ 3、增強給物件指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任。

​ 4、增加新的請求處理類很方便。

缺點:

​ 1、不能保證請求一定被接收。

​ 2、系統效能將受到一定影響,而且在進行**除錯時不太方便,可能會造成迴圈呼叫。

​ 3、可能不容易觀察執行時的特徵,有礙於除錯。

設計模式 職責鏈模式

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...

設計模式 職責鏈模式

今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...