概念
使用工厂的客户根本不知道具体的类.工厂的使用者创建一个基类的对象.但由子类决定实例化哪个.这就允许我们服从子类的实例化,但是调用都不知道哪个对象被创建.
类图
图片来自源: wiki
代码示例
#include <iostream>
class Button {
public:
virtual void paint() = 0;
};
class OSXButton: public Button {
public:
void paint() {
std::cout << "OSX button \n";
}
};
class WindowsButton: public Button {
public:
void paint() {
std::cout << "Windows button \n";
}
};
class GUIFactory {
public:
virtual Button *createButton(char *) = 0;
};
class Factory: public GUIFactory {
public:
Button *createButton(char *type) {
if(strcmp(type,"Windows") == 0) {
return new WindowsButton;
}
else if(strcmp(type,"OSX") == 0) {
return new OSXButton;
}
}
};
int main()
{
GUIFactory* guiFactory;
Button *btn;
guiFactory = new Factory;
btn = guiFactory->createButton("OSX");
btn -> paint();
btn = guiFactory->createButton("Windows");
btn -> paint();
return 0;
}
本文介绍工厂模式在编程中的应用,通过创建基类的对象来决定子类的实例化,实现对具体类的隐藏,使用户无需知道具体类即可进行操作。
486

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



