定義:
主要解決:
如何解決:
以**為例
類圖關係如下:
定義用於處理請求的介面,並可選擇實現後繼鏈結
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...
設計模式 職責鏈模式
今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...