C++抽象工厂模式(abstract factory patterns)实现
2017-02-15 19:23
429 查看
#ifndef SKIN_H #define SKIN_H #include <iostream> //Button class 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; } }; //TextField class 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; } }; //ComboBox class 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; } }; //factory class 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; }
相关文章推荐
- 创建型模式之抽象工厂模式(AbstractFactory Pattern)C++实现******
- 我所理解的设计模式(C++实现)——抽象工厂模式(Abstract Factory Pattern)
- (C++实现)——抽象工厂模式(Abstract Factory Pattern)
- 我所理解的设计模式(C++实现)——抽象工厂模式(Abstract Factory Pattern)
- c++设计模式:抽象工厂模式(Abstract Factory Pattern)
- 设计模式之抽象工程模式Abstract Factory Pattern()C++实现
- Understanding Factory Method and Abstract Factory Patterns(理解工厂方法模式和抽象工厂模式)
- 抽象工厂模式(AbsFactory)C++实现
- [C++]polymorphic and OOP design pattern Abstract Factory(抽象工厂模式)
- 抽象工厂模式(Abstract Factory Pattern)实现以及示例demo
- Python实现设计模式--03.抽象工厂模式(Abstract Factory Pattern)
- Java实现(02)——抽象工厂模式(Abstract Factory Pattern)
- C++设计模式之——抽象工厂模式(AbstractFactoryPattern)
- c++设计模式:抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 解读设计模式----抽象工厂模式(AbstractFactory Pattern)
- 设计模式 - Abstract Factory Pattern(抽象工厂模式)
- 抽象工厂模式(Abstract Factory Pattern)(2)
- 解读设计模式----抽象工厂模式(AbstractFactory Pattern)
- 设计模式 - Abstract Factory Pattern(抽象工厂模式)