工厂方法模式
Define an interface for creating an object, but let subclasses decide which class to instantiate Factory Method lets a class defer instantiation to subclasses.
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化推迟到其子类

#include <iostream>
using namespace std;
class Widget {
public:
virtual void Manufacture() = 0;
virtual void Destroy() = 0;
};
class Widget_A : public Widget {
public:
void Manufacture() { cout << "我是由工厂制造出的零件A" << endl; }
void Destroy() { cout << "我是即被工厂销毁的零件A" << endl; }
};
class Widget_B : public Widget {
public:
void Manufactory() {cout << "我是由工厂制造出的零件B" << endl; }
void Destroy() { cout << "我是即被工厂销毁的零件B" << endl; }
};
class Factory {
public:
virtual Widget* CreateWidget() = 0;
};
class Widget_AFactory : public Factory {
public:
Widget_A* CreateWidget() { return new Widget_A(); }
};
class Widget_BFactory : public Factory {
public:
Widget_B* CreateWidget() { return new Widget_B(); }
};int main()
{
Widget_AFactory* pWidget_AFactory = new Widget_AFactory();
Widget_A* pWidget_A = pWidget_AFactory->CreateWidget();
pWidget_A->Manufacture();
pWidget_A->Destroy();
delete pWidget_A;
delete pWidget_AFactory;
return 0;
}工厂方法模式的扩展:
1缩小为简单工厂模式
2升级为多个工厂类
3替代单例模式
4延迟初始化
本文介绍工厂方法模式的基本概念,通过示例代码展示了如何定义产品基类及具体产品类,并实现工厂基类及具体工厂类来实例化不同产品。此外,还讨论了该模式的几种扩展形式。
532

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



