📄 delegationpattern.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 + -