⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delegationpattern.h

📁 对设计模式中的factory, 代理等进行了实现。
💻 H
字号:
#ifndef DELEGATION_PATTERN_H
#define DELEGATION_PATTERN_H

#include <iostream>
#include "define.h"

class I
{
public:
	virtual void f()=0;
	virtual void g()=0;
	virtual ~I(){std::cout<<"Clean Up Interface :I\n";}

};

class A:public I
{
public:
	void f(){std::cout<<"A: doing f()\n";}
	void g(){std::cout<<"A: doing g()\n";}
	~A(){std::cout<<"Clean Up A\n";}
};


class B:public I
{
public:
	void f(){std::cout<<"B: doing f()\n";}
	void g(){std::cout<<"B: doing g()\n";}
	~B(){std::cout<<"CleBn Up B\n";}
};


///*******************************************
class CDelegation:public I
{
	I* m_I;
public:
    CDelegation():m_I(0){}
	~CDelegation(){SAFE_DELETE(m_I);}
	//method
	void f(){m_I->f();}
	void g(){m_I->g();}

    //Delegate some concrete class of I
	void DelegateA(){ SAFE_DELETE(m_I);m_I=new A();}
	void DelegateB(){SAFE_DELETE(m_I);m_I=new B();}
	

};

void UseDelegation();
///*******************************************



#endif//DELEGATION_PATTERN_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -