#include <iostream>
#include <vector>
class MyBase
{//基类->抽象类
public:
virtual void Fun() = 0;
virtual ~MyBase() {} //要做为基类的类,最好提供一个虚析构函数
protected:
MyBase() {}
};
class MyA : public MyBase
{//派生类A
public:
virtual void Fun()
{
std::cout<<"In A Class\n";
}
~MyA()
{
std::cout<<"MyA was gone!\n";
}
};
class MyB : public MyBase
{//派生类B
public:
virtual void Fun()
{
std::cout<<"In B Class\n";
}
~MyB()
{
std::cout<<"MyB was gone!\n";
}
};
class MyC : public MyBase
{//派生类C
public:
virtual void Fun()
{
std::cout<<"In C Class\n";
}
~MyC()
{
std::cout<<"MyC was gone!\n";
}
};
class Factory
{//工厂方法类
private:
//用来管理该工厂构建出的对象的生存期
std::vector<MyBase*> myPtList;
public:
template<class TBase>
TBase * GetObjPt()
{//工厂方法
TBase * pb =new TBase;
myPtList.push_back((MyBase*)pb);
return pb;
}
~Factory()
{
工厂(方法)模式->自定义版本
最新推荐文章于 2023-07-27 14:42:58 发布
这篇博客展示了如何利用工厂方法模式动态地创建不同类型的派生类对象,如MyA、MyB和MyC,这些类都继承自抽象基类MyBase。通过Factory类的模板方法GetObjPt,可以获取指向派生类实例的指针,并在适当的时候释放内存。在main函数中,创建并调用了这些对象的方法来演示工厂方法的应用。
摘要由CSDN通过智能技术生成