首页 > 代码库 > 抽象工厂模式
抽象工厂模式
一、相关介绍
抽象工厂模式提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。
二、UML图
三、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 factory103 {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 factory118 {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 }
抽象工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。