大话设计模式-Study-Tips-第一章-简单工厂模式
来源:互联网 发布:网红张大奕的淘宝店 编辑:程序博客网 时间:2024/05/02 12:19
一、UML图
C#版
c++版本
二、包含的角色
简单工厂模式包含三个角色:
(1)工厂类Factory:工厂类是用来制造产品的。因此,在Factory中有一个用于制造产品的Create函数或者Generate函数之类的函数(这里的CreateProduct)。这个函数能够根据“标识符”(这里的ProductType)的不同生成不同的ConcreteProduct,当然这些ConcreteProduct都是继承自AbstractProduct的。
(2)抽象产品类AbstractProduct:抽象产品是从其他具体产品抽象出来的。抽象产品类只有一个。
(3)具体产品类ConcreteProduct:具体产品类继承自抽象产品类,可以有多个。当需要增加新的产品的时候就增加一个继承自抽象产品类的具体产品类即可。
三、优势:
实现了松耦合,当需要增加一种新Product,只需要做两点改动:
(1)增加一个继承AbstractProduct的ConcreteProduct;
(2)在Factory中,switch中,增加一种根据标识符产生新运算的case即可。
四、代码实现
这里主要实现CreateProduct的编码。
C#实现
public AbstractProduct CreateProduct(ProductType type){ AbstractProduct product = null; switch (type) { case ProductType.A: product = new ConcreteProductA(); break; case ProductType.B: product = new ConcreteProductB(); break; case ProductType.C: product = new ConcreteProductC(); break; default: break; } return product;}
static void Main(string[] args){ AbstractProduct product = null; Factory factory = new Factory(); product = factory.CreateProduct(ProductType.A); //根据这里传入的Type来生成不同的Product Console.WriteLine("Hello World!");}
AbstractProduct* Factory::CreateProduct(ProductType type){AbstractProduct* product;switch (type){case A:product = new ConcreteProductA();break;case B:product = new ConcreteProductB();break;case C:product = new ConcreteProductC();break;default:break;}return product;}
int main(){ AbstractProduct* product=NULL; Factory factory; product = factory.CreateProduct(A);//根据这里传入的参数Type来生成不同的Product if (product!= NULL) {delete product;product = NULL; } return 0;}
阅读全文
0 0
- 大话设计模式-Study-Tips-第一章-简单工厂模式
- 大话设计模式-Study-Tips-第五章-工厂方法模式
- 大话设计模式 第一章 简单工厂模式
- 大话设计模式:第一章简单工厂模式
- 大话设计模式-第一章 简单工厂模式
- 大话设计模式 第一章 简单工厂模式
- 大话设计模式学习笔记-第一章-简单工厂模式
- 大话设计模式 第一章 简单工厂模式 C++实现
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- 大话设计模式-Study-Tips-第二章-策略模式
- 大话设计模式-Study-Tips-第三章-装饰模式
- 大话设计模式-Study-Tips-第四章-代理模式
- 大话设计模式之一【简单工厂模式】
- 大话设计模式-简单工厂模式
- 大话设计模式 --- 简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式---简单工厂模式
- Freeline框架解析
- 打印出给定字符串中字符的所有不重复排列
- HDU1215七夕节
- 刷题报告003 洛谷P1011 车站
- 【HDU】6047
- 大话设计模式-Study-Tips-第一章-简单工厂模式
- 设计思维分享
- 【深度学习】图像标注评价标准
- ++ map、multimap 的使用方法
- redhat 7安装CentOS 7 yum源
- 设计模式分类
- PAT 甲级 1010.Radix (25)
- 190. Reverse Bits
- 让你的windows 10更快更流畅!