抽象工厂模式

一、相关介绍

1、抽象工厂模式提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。

2、UML图

3、所属类别:创建型

二、C++程序

  1 // 抽象工厂模式.cpp : 定义控制台应用程序的入口点。
  2 //
  3 
  4 #include "stdafx.h"
  5 #include<iostream>
  6 using namespace std;
  7 
  8 //linux系列产品
  9 class linux
 10 {
 11 public:
 12     linux(){}
 13     virtual ~linux(){}
 14     virtual void show_price()=0;
 15 };
 16 
 17 //linux手机
 18 class plinux :public linux
 19 {
 20 public :
 21     plinux()
 22     {
 23         cout<<"i am a linux phone"<<endl;
 24     }
 25     virtual ~plinux(){}
 26     virtual void show_price();
 27 };
 28 
 29 void plinux::show_price()
 30 {
 31     cout<<"my price is 2000"<<endl;
 32 }
 33 //linux电脑
 34 class PClinux :public linux
 35 {
 36 public :
 37     PClinux()
 38     {
 39         cout<<"i am a linux PC"<<endl;
 40     }
 41     virtual ~PClinux(){}
 42     virtual void show_price();
 43 };
 44 void PClinux::show_price()
 45 {
 46     cout<<"my price is 5000"<<endl;
 47 }
 48 
 49 //windows系列产品
 50 class windows
 51 {
 52 public:
 53     windows(){}
 54     virtual ~windows(){}
 55     virtual void show_price()=0;
 56 };
 57 
 58 
 59 //windows 手机
 60 class pwindows :public windows
 61 {
 62 public :
 63     pwindows()
 64     {
 65          cout<<"i am a windows phone"<<endl;
 66     }
 67     virtual ~pwindows(){}
 68     virtual void show_price();
 69 };
 70 
 71 void pwindows::show_price()
 72 {
 73     cout<<"my price is 1999"<<endl;
 74 }
 75 
 76 //windows电脑
 77 class  PCwindows :public windows
 78 {
 79 public :
 80      PCwindows()
 81      {
 82          cout<<"i am a windows PC"<<endl;
 83      }
 84     virtual ~ PCwindows();
 85     virtual void show_price();
 86 };
 87 
 88 void  PCwindows::show_price()
 89 {
 90     cout<<"my price is 4999"<<endl;
 91 }
 92 //工厂抽象类
 93 class factory
 94 {
 95 public:
 96     factory(){}
 97     virtual~factory(){}
 98     virtual linux* creatlinux()=0;
 99     virtual windows*creatwindows()=0;
100 };
101 //手机工厂
102 class phonefactory:public factory
103 {
104 public:
105     phonefactory(){}
106     virtual~phonefactory(){}
107     virtual linux* creatlinux()
108     {
109         return new plinux();
110     }
111     virtual windows* creatwindows()
112     {
113         return new pwindows();
114     }
115 };
116 //电脑工厂
117 class PCfactory:public factory
118 {
119 public:
120     PCfactory(){}
121     virtual~PCfactory(){}
122     virtual linux* creatlinux()
123     {
124         return new PClinux();
125     }
126     virtual windows* creatwindows()
127     {
128         return new PCwindows();
129     }
130 };
131 
132 //用户界面
133 int _tmain(int argc, _TCHAR* argv[])
134 {
135     factory *phone=NULL;
136     phone=new phonefactory;
137     linux *phone_linux=phone->creatlinux();
138     phone_linux->show_price();
139     windows *phone_windows=phone->creatwindows();
140     phone_windows->show_price();
141 
142     return 0;
143 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 桥接模式

    一、概述 1、桥接模式将抽象部分与它的实现部分分离,使它们都可以独立的变化。 2、在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,桥接模式把这...

    用户1215536
  • java中的==和equals

    一、使用==判断两个变量是否相等 (1)对于基本类型的变量,值相等则返回true (2)对于引用类型的变量,只有指向同一个对象时才返回true。 ==不可以比较...

    用户1215536
  • linux中压缩与解压缩命令小结

    linux中压缩与解压操作非常常见,其命令参数也非常的多,这里只介绍最经常用的带打包文件的几种压缩和解压方式和几个最常用的参数。 现在最常用的压缩和解压工具是g...

    用户1215536
  • 使用 pandas处理股票数据并作分析

    文/kamidox(简书作者) 原文:http://www.jianshu.com/p/1f1d4952669c pandas 是数据分析的瑞士军刀。我们...

    机器学习AI算法工程
  • Windows为什么是闭源Linux是开源?

    这属于历史遗留的问题,先了解下windows和linux在市场上的占有方式,windows已经以闭环的方式持续运行几十年了,主要范围还是在PC电脑,在服务器端也...

    程序员互动联盟
  • 威胁预警 | 蠕虫级漏洞BlueKeep(CVE-2019-0708) EXP被公布

    Metasploit 在博客和推特上相继发布消息称,Metasploit正式集成针对CVE-2019-0708(也称为BlueKeep)的漏洞利用模块,虽然目前...

    FB客服
  • NumPy 超详细教程(2):数据类型

    NumPy 支持比 Python 更多种类的数值类型,下表所列的数据类型都是 NumPy 内置的数据类型,为了区别于 Python 原生的数据类型,bool、i...

    丹枫无迹
  • Bruteforcer:分布式多线程破解RAR文件密码(附工具下载)

    BruteForcer是一款暴力破解RAR文件密码的服务器端和客户端多线程工具,用户可以通过多个客户端连接到服务器并行加速,功能十分强大。事实上,该工具不仅限于...

    FB客服
  • 纪念那些在2019年逝去的技术

    每年都能看到有些受欢迎的应用程序,值得关注的初创公司和一些新奇想法还未真正起步就逐渐淡出我们的视线。

    大数据文摘
  • python format函数

    在Python 3.0中,%操作符通过一个更强的格式化方法format()进行了增强。对str.format()的支持已经被反向移植到了Python 2.6 ...

    py3study

扫码关注云+社区

领取腾讯云代金券