设计模式的理解: 职责链模式 (chain of responsibility) -ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
设计模式的理解: 职责链模式 (chain of responsibility)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
职责链模式(chain of responsibility pattern),为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
简言之,当有一个请求发送时,有一群对象可以按照优先级接受这些请求。职责链模式就是通过链表的形式完成下面操作,在现在来看这种实现方法有点落后,但是放在1994年还是很有指导意义的。
在图形界面程序中有些控件可以触发单机事件,例如
一个winform 窗体上放了一个 控件组groupbox ,控件组上放了一个label 标签控件。我们设置 label 标签 和 groupbox 控件组没有单击不发生作用,当单击label时,单击请求自上而下的传递到winform中触发winform 窗体的单击事件:
class requset{ private:string msg_; public:requset(){msg_ ="点击请求";}string getmsg(){return msg_;}; }/****这个类时重点****/ class chainhandler{chainhandler * nexthandler;void sendrequesttonexthandler (const requset & rq){if(nexthandler !=nullptr){nexthandler->handle(rq);}}protected:virtual bool canhandlerequest() = 0;virtual void handleprocess(const requset & rq)=0; public:chainhandler(){nexthandler =nullptr;}void setnexthandler(chainhandler * next){nexthandler=next;}void handle(const requset & rq){if(canhandlerequest()){handleprocess(rq);}else{sendrequesttonexthandler(rq);}} }/**********接下来的类只要负责实现canhandlerequest和handleprocess就行************/ class winform :public chainhandler{public:void handleprocess(const requset & rq){cout<<"winform 处理了"<
总结
以上是ag凯发k8国际为你收集整理的设计模式的理解: 职责链模式 (chain of responsibility)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 设计模式的理解:迭代器模式(iterat
- 下一篇: 设计模式的理解:命令模式 (comman