您的位置:首页 > 大数据 > 人工智能

每天一个设计模式: 责任链模式(Chain Of Responsibility)

2016-01-13 17:33 681 查看
#ifndef HANDLER_H
#define HANDLER_H

#include <string>
#include <iostream>

class Handler
{
protected:
Handler* m_handler;
public:
Handler(Handler* handler) :m_handler(handler){}
virtual void HandlerMsg(int num)
{
if (num == 0)
{
std::cout << "Handler Pass" << std::endl;
}
else
{
if (m_handler)
this->m_handler->HandlerMsg(num);
}
}
};

class HandlerLevel1: public Handler
{
public:
HandlerLevel1(Handler* handler) :Handler(handler) {}
virtual void HandlerMsg(int num)
{
if (num <10)
{
std::cout << "HandlerLevel1 Pass" << std::endl;
}
else
{
if (m_handler)
this->m_handler->HandlerMsg(num);
}
}
};

class HandlerLevel2 : public Handler
{
public:
HandlerLevel2(Handler* handler) :Handler(handler) {}
virtual void HandlerMsg(int num)
{
if (num < 100)
{
std::cout << "HandlerLevel2 Pass" << std::endl;
}
else
{
if (m_handler)
this->m_handler->HandlerMsg(num);
}
}
};

#endif
// Chain.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "Handler.h"

int _tmain(int argc, _TCHAR* argv[])
{
Handler* handler_level_2 = new HandlerLevel2(NULL);
Handler* handler_level_1 = new HandlerLevel1(handler_level_2);
Handler *handler = new Handler(handler_level_1);

handler->HandlerMsg(50);

getchar();

delete handler;
delete handler_level_1;
delete handler_level_2;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: