delegationpattern.h

来自「对设计模式中的factory, 代理等进行了实现。」· C头文件 代码 · 共 57 行

H
57
字号
#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 + =
减小字号Ctrl + -
显示快捷键?