星空网 > 软件开发 > ASP.net

Chain Of Responsibility(职责连)

1.意图

    使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

2.动机

    给多个对象处理一个请求的机会,从而解耦发送者和接收者。

3.适用性

  • 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
  • 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
  • 可处理一个请求的对象集合应被动态指定。

4.结构

    Chain Of Responsibility(职责连)

5.代码实例

    

//Handler.h#include <memory>class AbstractHandler{public:  virtual void HandleRequest() = 0;  virtual void SetHandler(std::shared_ptr<AbstractHandler> pHandler);protected:  std::shared_ptr<AbstractHandler> m_pHandler;};class BaseHandler : public AbstractHandler{public:  virtual void HandleRequest();};class ConcreteHandler1 : public BaseHandler{public:   void HandleRequest();};class ConcreteHandler2 : public BaseHandler{public:   void HandleRequest();};

//Handler.cpp#include <iostream>#include "Handler.h"void AbstractHandler ::SetHandler(std::shared_ptr<AbstractHandler> pHandler){  m_pHandler = pHandler;};void BaseHandler ::HandleRequest(){  std::cout << "Base Handler Handled" << std::endl;};void ConcreteHandler1 ::HandleRequest(){  std::cout << "ConcreteHandler1 Handled" << std::endl;  m_pHandler->HandleRequest();};void ConcreteHandler2 ::HandleRequest(){  std::cout << "ConcreteHandler2 Handled" << std::endl;  m_pHandler->HandleRequest();};

//client#include "Handler.h"int main(){  std::shared_ptr <AbstractHandler> pConcreteHandler1(new ConcreteHandler1);  std::shared_ptr <AbstractHandler> pConcreteHandler2(new ConcreteHandler2);  std::shared_ptr <AbstractHandler> pBaseHandler(new BaseHandler);  pConcreteHandler1->SetHandler(pConcreteHandler2);  pConcreteHandler2->SetHandler(pBaseHandler);  pConcreteHandler1->HandleRequest();  while(1);}

6.测试结果

    Chain Of Responsibility(职责连)

以上结果为每个handler执行后均调用上一级的handler执行。

7.效果

  • 降低耦合度    该模式使得一个对象无需知道是其他哪一个对象处理其请求。
  • 增强了给对象指派职责的灵活性    
  • 不保证被接受



原标题:Chain Of Responsibility(职责连)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

尽快办理!没有NVOCC资质提单上就没有你名字!:https://www.ikjzd.com/articles/103705
七夕特辑:细数亚马逊卖家的进化史!:https://www.ikjzd.com/articles/103708
新手收藏!亚马逊36个专业名词基础概念:https://www.ikjzd.com/articles/103709
国外eBay大卖家用这些工具来提升GMV,月销近百万:https://www.ikjzd.com/articles/10371
JOOM推出“博主营销”功能 / 速卖通免费退货服务新增八国:https://www.ikjzd.com/articles/103710
警惕:新型钓鱼诈骗手段出没德国站!:https://www.ikjzd.com/articles/103711
E-Bike品牌EMotorad获战略融资!:https://www.kjdsnews.com/a/1840707.html
Shopee订单量激增5倍多,越南成韩国美容品牌主要消费市场:https://www.kjdsnews.com/a/1840708.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流