设计模式之Chain of Responsibility模式
2013-07-09 16:10
204 查看
Responsibility.h
#ifndef _RESPONSIBILITY_H_ #define _RESPONSIBILITY_H_ class CHandler { public: CHandler(); CHandler(CHandler *succ); virtual ~CHandler(); virtual void HandlerQuestion()=0; void SetSuccessor(CHandler *succ); CHandler* GetSuccessor(); private: CHandler *m_succ; }; class CConcreteHandlerA:public CHandler { public: CConcreteHandlerA(CHandler *succ); CConcreteHandlerA(); ~CConcreteHandlerA(); void HandlerQuestion(); }; class CConcreteHandlerB:public CHandler { public: CConcreteHandlerB(CHandler *succ); CConcreteHandlerB(); ~CConcreteHandlerB(); void HandlerQuestion(); }; #endif
Responsibility.cpp
#include <iostream> #include <assert.h> #include "Responsibilty.h" using namespace std; CHandler::CHandler() { m_succ=0; } CHandler::CHandler(CHandler *succ) { m_succ=succ; } CHandler::~CHandler() { if(m_succ) { delete m_succ; m_succ=0; } } void CHandler::SetSuccessor(CHandler *succ) { assert(succ); m_succ=succ; } CHandler * CHandler::GetSuccessor() { return m_succ; } CConcreteHandlerA::CConcreteHandlerA() { } CConcreteHandlerA::CConcreteHandlerA(CHandler *succ):CHandler(succ) { } CConcreteHandlerA::~CConcreteHandlerA() { } void CConcreteHandlerA::HandlerQuestion() { if(this->GetSuccessor()) { cout<<"Give the Handler to the successor of the HandlerA"<<endl; this->GetSuccessor()->HandlerQuestion(); } else { cout<<"I do it alone"<<endl; } } CConcreteHandlerB::CConcreteHandlerB() { } CConcreteHandlerB::CConcreteHandlerB(CHandler *succ):CHandler(succ) { } CConcreteHandlerB::~CConcreteHandlerB() { } void CConcreteHandlerB::HandlerQuestion() { if(this->GetSuccessor()) { cout<<"Give the Handler to the successor of the HandlerB"<<endl; this->GetSuccessor()->HandlerQuestion(); } else { cout<<"B do it alone"<<endl; } }
Chain of Responsibility模式的最大的一个有点就是给系统降低了耦合性,请求的发送者完全不必知道该请求会被哪个应答对象处理,极大地降低了系统的耦合性。
相关文章推荐
- java设计模式之责任链模式(Chain of Responsibility)
- 设计模式24---设计模式之职责链模式(Chain of Responsibility)(行为型)
- 设计模式学习笔记---职责链模式chain of responsibility(Java版)
- Chain of Responsibility(职责链设计模式)
- 【设计模式】之 Chain of Responsibility 职责链模式
- 设计模式-职责链/责任链模式(Chain of Responsibility)分析理解和在Android的应用
- 【设计模式基础】行为模式 - 3 - 职责链(Chain of responsibility)
- 【设计模式】行为模式之Chain of Responsibility职责链
- 【设计模式攻略】行为型模式之Chain of Responsibility模式
- 设计模式 职责连模式(Chain of Responsibility)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之(十四)--职责链模式(Chain Of Responsibility)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之职责链模式(Chain of Responsibility)
- Java设计模式(14)责任链模式(Chain of Responsibility模式)
- GOF23设计模式之责任链模式(chain of responsibility)与结构型模式总结经典
- 设计模式拾荒之责任链模式 ( Chain of Responsibility)
- 23种设计模式之责任链模式(Chain of Responsibility)
- 设计模式之职责链模式(Chain Of Responsibility)
- Java设计模式之从[使命召唤等游戏的任务提示]分析职责链(Chain Of Responsibility)模式