文档章节

ChainOfResponsibility模式

Ne0o0
 Ne0o0
发布于 2017/05/02 13:35
字数 149
阅读 4
收藏 0
class AbstractLogger 
{
public:
	enum Level
	{
		INFO,
		DEBUG,
		ERROR 
	};
	AbstractLogger (AbstractLogger *pNextLogger){m_pNextLogger=pNextLogger;}
	virtual~AbstractLogger (){}
	virtual void HandleRequset()=0;
	virtual void SetHander(AbstractLogger *pNextLogger){m_pNextLogger=pNextLogger;}
protected:
	AbstractLogger *m_pNextLogger;
    Level m_level;
};

class ConsoleLogger :public AbstractLogger
{
public:
	ConsoleLogger(AbstractLogger *pNextLogger=nullptr):AbstractLogger(pNextLogger){this->m_level=INFO;}
	~ConsoleLogger(){};
	void HandleRequset(){if(m_pNextLogger){m_pNextLogger->HandleRequset();}else {printf("this is ConsoleLogger HandleRequset\n");}}
};

class ErrorLogger  :public AbstractLogger
{
public:
	ErrorLogger (AbstractLogger *pNextLogger=nullptr):AbstractLogger(pNextLogger){this->m_level=ERROR;}
	~ErrorLogger (){};
	void HandleRequset(){if(m_pNextLogger){m_pNextLogger->HandleRequset();}else {printf("this is ErrorLogger  HandleRequset\n");}}
};

class FileLogger   :public AbstractLogger
{
public:
	FileLogger  (AbstractLogger *pNextLogger=nullptr):AbstractLogger(pNextLogger){this->m_level=DEBUG;}
	~FileLogger  (){};
	void HandleRequset(){if(m_pNextLogger){m_pNextLogger->HandleRequset();}else {printf("this is FileLogger   HandleRequset\n");}}
};
int _tmain(int argc, _TCHAR* argv[])
{
	ConsoleLogger cl;
	ErrorLogger el;
	FileLogger fl;
	cl.HandleRequset();
	cl.SetHander(&el);
	cl.HandleRequset();

	el.HandleRequset();
	el.SetHander(&fl);
	el.HandleRequset();

	fl.HandleRequset();

	getchar();
	return 0;
}

© 著作权归作者所有

上一篇: FlyWeight模式
下一篇: TemplateMethod模式
Ne0o0
粉丝 2
博文 70
码字总数 29011
作品 0
程序员
私信 提问
设计模式之责任链(ChainOfResponsibility)

责任链(ChainOfResponsibility) 对于设计模式的学习,一定要动手,而且要多次练习,然后慢慢消化和理解,才能明白其精髓。但是,设计模式只是在特殊情景下的特殊解决方案,不要滥用,不要为...

_-Leon-_
2014/06/11
0
0
一句话总结java23种设计模式

设计模式的六大原则 1、开闭原则(Open Close Principle):对扩展开放对修改关闭 2、里氏代换原则(Liskov Substitution Principle):父类出现的地方,子类也可出现 3、依赖倒转原则(Dep...

HZCoder
2016/03/15
207
4
一句话总结23种设计模式则

1. 前言 断断续续写了一段时间的设计模式,终于把经典的23种设计模式全写完了。下面对这些设计模式总结一下。 2. 设计原则 设计原则的介绍 : 设计模式的六大原则 即使我们之前没有专门看过这...

四月葡萄
2018/01/05
0
0
Android的设计模式-桥接模式

前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 一句话总结23种设计模式则 创建型模式: Android的设计模式-单例模式 Android的设计模式...

四月葡萄
2018/01/05
0
0
Android的设计模式-享元模式

前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 一句话总结23种设计模式则 创建型模式: Android的设计模式-单例模式 Android的设计模式...

四月葡萄
2018/01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cesium中级4 - 空间数据可视化(二)

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Viewer中的Entity功能 让我们看看Viewer为操作entities提供出来的功能函数。 选中和描述 点击Viewer中的e...

Cesium中文网
8分钟前
0
0
Linux-CentOS7 安装VMware Workstation

Linux-CentOS7 安装VMware Workstation 太极之道关注0人评论1605人阅读2018-10-17 14:36:22 Linux-CentOS7 安装VMware Workstation 12 1、下载VMware 衔接地址 http://www.vmware.com/produc......

linjin200
11分钟前
0
0
centos7.5 部署flask+nginx+uwsgi+python3

centos7.5 部署flask+nginx+uwsgi+python3 ## uwsgi [uwsgi] master = true max-requests = 6000 processes = 6 threads = 6 chmod-socket = 664 thunder-lock = true buffer-size = 32768 #......

丁典
15分钟前
0
0
BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览

一、引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库,国内以阿...

阿里云官方博客
20分钟前
0
0
好代码是什么样的?

简评: 好代码是什么样的?相信不同的人会有不同的看法,正如「一千个读者,就有一千个哈姆雷特」,关键在于你有没有自己的标准。 这篇文章是我个人很喜欢的一家公司 - Atomic Spin 的 blog...

极光推送
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部