首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

c++ 设计方式之 抽象工厂模式

2012-08-08 
c++ 设计模式之 抽象工厂模式概念:抽象工厂模式提供了一个创建相或相关相互依赖的对象,而不需要说明其具体

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

概念:

抽象工厂模式提供了一个创建相似或相关相互依赖的对象,而不需要说明其具体的实现.


类结构图:

c++ 设计方式之 抽象工厂模式

图来自: wiki


示例代码:

#include <iostream>class Button{public:virtual void paint() = 0;};class WinButton : public Button {public:void paint (){std::cout << " Window Button \n";}};class MacButton : public Button {public:void paint (){std::cout << " Mac Button \n";}};class ScrollBar {public:virtual void paint() = 0;};class WinScrollBar : public ScrollBar {public:void paint (){std::cout << " Window ScrollBar \n";}};class MacScrollBar : public ScrollBar {public:void paint (){std::cout << " Mac ScrollBar \n";}};class GUIFactory {public:virtual Button* createButton () = 0;virtual ScrollBar* createScrollBar () = 0;};class WinFactory : public GUIFactory {public:Button* createButton (){return new WinButton;}ScrollBar* createScrollBar (){return new WinScrollBar;}};class MacFactory : public GUIFactory {public:Button* createButton (){return new MacButton;}ScrollBar* createScrollBar (){return new MacScrollBar;}};int main(){GUIFactory* guiFactory;Button *btn;ScrollBar *sb;guiFactory = new MacFactory;btn = guiFactory->createButton();btn -> paint();sb = guiFactory->createScrollBar();sb -> paint();guiFactory = new WinFactory;btn = guiFactory->createButton();btn -> paint();sb = guiFactory->createScrollBar();sb -> paint();return 0;}


热点排行