#include <iostream>
using namespace std;
class CLeiFeng
{
public:
virtual ~CLeiFeng()
{
}
virtual void cook()
{
}
virtual void clean()
{
}
virtual void laundry()
{
}
};
class CHelperA:public CLeiFeng
{
public:
void cook()
{
cout<<"Helper cook"<<endl;
}
void clean()
{
cout<<"Helper clean"<<endl;
}
void laundry()
{
cout<<"Helper laundry"<<endl;
}
};
class CHelperB:public CLeiFeng
{
public:
void cook()
{
cout<<"HelperB cook"<<endl;
}
void clean()
{
cout<<"HelperB clean"<<endl;
}
void laundry()
{
cout<<"HelperB laundry"<<endl;
}
};
class IFactory
{
public:
virtual ~IFactory()
{
}
virtual CLeiFeng *GetFactory()
{
return NULL;
}
};
class CHelperAFactory:public IFactory
{
public:
CLeiFeng *GetFactory()
{
return new CHelperA;
}
};
class CHelperBFactory:public IFactory
{
public:
CLeiFeng *GetFactory()
{
return new CHelperB;
}
};
int main()
{
IFactory *factory = new CHelperBFactory();
factory->GetFactory()->cook();
return 0;
}
/******本功能实现学雷锋帮人做家务******/
打印结果:
HelperB cook
本文通过一个具体的工厂模式实例,展示了如何使用C++实现不同类型的帮助者对象创建过程。该实例中定义了抽象基类CLeiFeng及两个派生类CHelperA与CHelperB,并通过工厂接口IFactory来获取这些派生类的对象实例。

被折叠的 条评论
为什么被折叠?



