c++ 设计模式之 工厂模式

来源:互联网 发布:在国外淘宝能用吗 编辑:程序博客网 时间:2024/06/16 22:58

概念

使用工厂的客户根本不知道具体的类.工厂的使用者创建一个基类的对象.但由子类决定实例化哪个.这就允许我们服从子类的实例化,但是调用都不知道哪个对象被创建.

类图


图片来自源: 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;}



原创粉丝点击