随手写了几行代码
看COM的时候随手写了一行代码,写完发现是工厂方法模式。。。
废话不多说了
#include "stdafx.h"
#include <iostream>
using namespace std;
class InterfaceA
{
public:
InterfaceA();
virtual ~InterfaceA();
virtual void Func1() = 0;
virtual void Func2() = 0;
};
InterfaceA::InterfaceA(){}
InterfaceA::~InterfaceA(){}
class ComponetB : public InterfaceA
{
public:
ComponetB();
virtual ~ComponetB();
virtual void Func1();
virtual void Func2();
};
ComponetB::ComponetB(){cout<<"组件B创建"<<endl;}
ComponetB::~ComponetB(){cout<<"组件B析构"<<endl;}
void ComponetB::Func1(){cout<<"CompoentB::Func1 is called \n";}
void ComponetB::Func2(){cout<<"ComponetB::Func2 is called \n";}
class ComponetC : public InterfaceA
{
public:
ComponetC();
virtual ~ComponetC();
virtual void Func1();
virtual void Func2();
};
ComponetC::ComponetC(){cout<<"组件C创建"<<endl;}
ComponetC::~ComponetC(){cout<<"组件C析构"<<endl;}
void ComponetC::Func1(){cout<<"ComponentC::Fucn1 is called \n";}
void ComponetC::Func2(){cout<<"ComponetC::Func2 is called \n";}
class IFactory
{
public:
IFactory();
virtual ~IFactory();
virtual InterfaceA* CreateInstance() = 0;
protected:
InterfaceA* m_ptrIA;
};
IFactory::IFactory() : m_ptrIA(NULL){}
IFactory::~IFactory(){if(NULL != m_ptrIA) delete m_ptrIA; m_ptrIA = NULL;}
class FactoryB : public IFactory
{
public:
FactoryB();
virtual ~FactoryB();
virtual InterfaceA* CreateInstance();
};
FactoryB::FactoryB() : IFactory(){}
FactoryB::~FactoryB(){if(NULL != m_ptrIA) delete m_ptrIA; m_ptrIA = NULL;}
InterfaceA* FactoryB::CreateInstance(){return (m_ptrIA = new ComponetB());}
class FactoryC : public IFactory
{
public:
FactoryC();
virtual ~FactoryC();
virtual InterfaceA* CreateInstance();
};
FactoryC::FactoryC() : IFactory(){}
FactoryC::~FactoryC() {if(NULL != m_ptrIA) delete m_ptrIA; m_ptrIA = NULL;}
InterfaceA* FactoryC::CreateInstance(){return (m_ptrIA = new ComponetC());}
int _tmain(int argc, _TCHAR* argv[])
{
IFactory* pFactory = new FactoryB();
InterfaceA* pInterface = pFactory->CreateInstance();
pInterface->Func1();
cout<<endl;
pInterface->Func2();
cout<<endl<<endl;
delete pFactory;
pFactory = new FactoryC();
pInterface = pFactory->CreateInstance();
pInterface->Func1();
cout<<endl;
pInterface->Func2();
delete pFactory;
return 0;
}
**********************技术交流请 email:cuihao0532#163.com 欢迎转载,转载请注明出处!***************************** 如果对本文满意请扫描文章左侧【二维码添加微信】获取更多好玩、有趣、有益、有营养的料,
你我共同成长!Y(^_^)Y
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗