抽象工厂模式(C++)

摘要:
#definewin0#definemac1#include<iostream>usingspacestd;classbutton{public:button(){}virtual ~ button(){}虚拟显示按钮()=0;};classwinbutton:publicbutton{public:winbutton(){}virtual~winbutton
#define win 0
#define mac 1
#include <iostream>
using namespace std;

class button
{
public:
    button(){}
    virtual ~button(){}
    virtual void showbutton()=0;
};

class winbutton : public button
{
public:
    winbutton(){}
    virtual ~winbutton(){}
    void showbutton(){cout<<"win button"<<endl;}
};

class macbutton : public button
{
public:
    macbutton(){}
    virtual ~macbutton(){}
    void showbutton(){cout<<"mac button"<<endl;}
};

class text
{
public:
    text(){}
    virtual ~text(){}
    virtual void showtext()=0;
};

class wintext : public text
{
public:
    wintext(){}
    virtual ~wintext(){}
    void showtext(){cout<<"win text"<<endl;}
};

class mactext : public text
{
public:
    mactext(){}
    virtual ~mactext(){}
    void showtext(){cout<<"mac text"<<endl;}
};

class abstractfactory
{
public:
    abstractfactory(){}
    virtual ~abstractfactory(){}
    virtual button *createbutton()=0;
    virtual text *createtext()=0;
};

class winfactory : public abstractfactory
{
public:
    winfactory(){}
    virtual ~winfactory(){}
    button *createbutton(){return new winbutton;}
    text *createtext(){return new wintext;}
};

class macfactory : public abstractfactory
{
public:
    macfactory(){}
    virtual ~macfactory(){}
    button *createbutton(){return new macbutton;}
    text *createtext(){return new mactext;}
};

int main()
{
    abstractfactory *fc=new winfactory;
    button *bt=fc->createbutton();
    text *tx=fc->createtext();
    bt->showbutton();
    tx->showtext();
    delete bt;
    delete tx;
    delete fc;

    fc=new macfactory;
    bt=fc->createbutton();
    tx=fc->createtext();
    bt->showbutton();
    tx->showtext();
    delete bt;
    delete tx;
    delete fc;

    system("pause");
    return 0;
}

免责声明:文章转载自《抽象工厂模式(C++)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇strcmp 与 _tcscmp手机功耗测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

页面添加水印兼容IE9

1、如何给页面添加定制水印 定制水印一般指的是可以指定任何文字,给页面添加定制水印有多种方法: 背景图方式 创建元素,悬浮在页面之上的方式 1.1、通过背景图给页面添加定制水印(会被子元素的背景覆盖) 通过背景图添加定制水印: 首先制做定制水印,定制水印可以通过 canvas 绘画出来 然后通过 background-image 属性将 canvas...

VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)

http://www.jizhuomi.com/software/255.html  上一节中鸡啄米讲了为Ribbon Bar添加控件的方法。本节教程鸡啄米将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数。        一、为Ribbon Bar添加更多Ribbon控件        鸡啄米将在上一节实例的基础上,继续添...

WPF Button添加图片

0、更改模板 效果: 代码: <Button x:Name="m_HelpButton"IsEnabled="True"Width="23"Height="23"Click="m_HelpButton_Click"> <Button.Template> <...

uniapp获取用户信息 getuserinfo

<button type="primary" open-type="getUserInfo" @getuserinfo="wxGetUserInfo">登录</button> wxGetUserInfo(){ uni.getUserInfo({ success:...

IOS键盘样式风格有关设置

一、键盘风格 UIKit框架支持8种风格键盘。 typedefenum{ UIKeyboardTypeDefault,//默认键盘:支持所有字符 UIKeyboardTypeASCIICapable,//支持ASCII的默认键盘 UIKeyboardTypeNumbersAndPunctuation,//标准电话键盘,支持+*#等符号 UIKe...

VC中Spin控件的使用

微调按钮设置成set buddy inter选上 然后可以(1)通过 setbuddy+setrange函数    或(2)auto buddy自动选上,只要编辑框的tab order 比微调按钮小1就可以自动了 (另转)VC中Spin控件的使用 http://leichaofu.blog.163.com/blog/static/459481820098...