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
原创粉丝点击