C++抽象工厂模式(abstract factory patterns)实现
来源:互联网 发布:沈航网络自助 编辑:程序博客网 时间:2024/05/17 23:50
#ifndef SKIN_H#define SKIN_H#include <iostream>//Buttonclass Button{ public: virtual void display() = 0;};class SpringButton : public Button{ public: void display() { std::cout << "sprint button" << std::endl; }};class SummerButton : public Button{ public: void display() { std::cout << "summer button" << std::endl; }};//TextFieldclass TextField{ public: virtual void display() = 0;};class SpringTextField : public TextField{ public: void display() { std::cout << "sprint textfield" << std::endl; }};class SummerTextField : public TextField{ public: void display() { std::cout << "summer textfield" << std::endl; }};//ComboBoxclass ComboBox{ public: virtual void display() = 0;};class SpringComboBox : public ComboBox{ public: void display() { std::cout << "spring combobox" << std::endl; }};class SummerComboBox : public ComboBox{ public: void display() { std::cout << "summer combobox" << std::endl; }};//factoryclass SkinFactory{ public: virtual Button* createButton() = 0; virtual TextField* createTextField() = 0; virtual ComboBox* createComboBox() = 0;};//产品族工厂class SpringSkinFactory : public SkinFactory{ public: Button* createButton() { Button* p = new SpringButton; return p; } TextField* createTextField() { TextField* p = new SpringTextField; return p; } ComboBox* createComboBox() { ComboBox* p = new SpringComboBox; return p; }};//产品族工厂class SummerSkinFactory : public SkinFactory{ public: Button* createButton() { Button* p = new SummerButton; return p; } TextField* createTextField() { TextField* p = new SummerTextField; return p; } ComboBox* createComboBox() { ComboBox* p = new SummerComboBox; return p; }};#endif
#include "Skin.h"#include <iostream>void test_spring(){ SkinFactory* p = new SpringSkinFactory; p->createButton()->display(); p->createTextField()->display(); p->createComboBox()->display();}void test_summer(){ SkinFactory* p = new SummerSkinFactory; p->createButton()->display(); p->createTextField()->display(); p->createComboBox()->display();}int main(){ test_spring(); test_summer(); return 0;}
0 0
- C++抽象工厂模式(abstract factory patterns)实现
- Understanding Factory Method and Abstract Factory Patterns(理解工厂方法模式和抽象工厂模式)
- 抽象工厂模式(Abstract Factory)
- Abstract Factory(抽象工厂模式)
- Abstract Factory抽象工厂模式
- 抽象工厂(Abstract Factory)模式
- Abstract Factory 抽象工厂模式
- Abstract Factory 抽象工厂模式
- 抽象工厂(Abstract Factory)模式
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- Abstract Factory 抽象工厂模式
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- Maven的下载安装配置
- 数据库——限制数据和对数据排序
- 个人笔记-百万年薪项目经理之路(下)
- codeforces 730 A Toda 2
- mybatis解决insert时候空值问题
- C++抽象工厂模式(abstract factory patterns)实现
- 最长上升子序列
- Android listView 的使用
- map与set的基本应用
- HDU 1109 Run Away 模拟退火算法
- mysql int,datetime,timestamp时间戳、时间日期相关总结分析
- Spring MVC学习
- 380. Insert Delete GetRandom O(1)
- FEA大数据实践之亿级数据量处理