设计模式~简单工厂模式(Factory)
简单工厂模式Simple Factory根据提供给它的数据,返回一个类的实例。通常它返回的类都有一个公共的父类(或者接口对象)。
简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。简单工厂实例化的类具有相同的接口或者基类,在子类比较固定并不需要扩展时,可以使用简单工厂。如数据库生产工厂就是简单工厂的一个应用。
采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类 型,则需要修改工厂,不符合OCP(开闭原则)的原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。
下面是我实例中的类结构图,它有一个ICreate的公共接口,有一个方法叫Create,返回值为Void
aaarticlea/png;base64,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" alt="" />
其中公用的接口代码如下:(最后工厂的返回值类型)
1 /// <summary>
/// 简单工厂接口,返回值类型
/// </summary>
4 public interface ICreate
5 {
6 void Create();
7 }
而下面,分别用people和animal两个类去实现了ICreate接口,并实现了它的Create方法。
1 /// <summary>
/// 人类实现工厂接口
/// </summary>
4 public class People : ICreate
5 {
6
7 #region ICreate 成员
8
9 public void Create()
10 {
11 Console.WriteLine("创建人类");
12 }
13
14 #endregion
15 }
16 /// <summary>
/// 动物实现工厂接口
/// </summary>
19 public class Animal : ICreate
20 {
21
22 #region ICreate 成员
23
24 public void Create()
25 {
26 Console.WriteLine("创建动物");
27 }
28
29 #endregion
30 }
而对于外界来说,会有另一个类去为外界提供服务,它们可以需要建立People或者Animal类型的实现,代码如下:
1 public class CreateFactory
2 {
3 public static ICreate GeneratorCreate(string createName) {
4 switch (createName)
5 {
6 case "People":
7 return new People();
8 case "Animal":
9 return new Animal();
10 default:
11 throw new NotImplementedException();
12 }
13 }
最后,在使用它时,直接使用CreateFactory.GeneratorCreate("类型条件名")即可生成你的类对象了。
以上内容转自 张占岭
设计模式~简单工厂模式(Factory)的更多相关文章
- Golang设计模式—简单工厂模式(Simple Factory Pattern)
Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...
- 3. 星际争霸之php设计模式--简单工厂模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 深入浅出设计模式——简单工厂模式(Simple Factory)
介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ...
- 设计模式 | 简单工厂模式(static factory method)
按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识. 但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了. 也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍. ...
- python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...
- 设计模式 — 简单工厂模式(Simple Factory)
定义:定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常有公共的父类. 模式类型:创建型模型 Factory(工厂角色):即工厂类,负责实现创建所有产品实例的内部逻辑:工厂类可以 ...
- Java设计模式-简单工厂模式(Static Factory Method)
简单工厂模式(Static Factory Method) 简单工厂模式是类的创建模式,又叫静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种 ...
- C++设计模式——简单工厂模式
简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
随机推荐
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- java类的继承
继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(重写)的方式,产生一个新的类型.继承是面向对 象的三个基本特征--封装.继承.多态的其中之一,我们在使用java时编写的每一个类都是 ...
- QQ、淘宝、阿里旺旺在线网页链接代码及详解 很实用
你可直接到官网去生成代码,简单.方便,相信都能上网的你,对这不会有难度的,认识字的就行,赶紧去吧! 1.阿里旺旺官网: http://page.1688.com/html/wangwang/dow ...
- hdu1272 并查集
如果要输出yes 需要满足 1 这个图连通 2 没有回路 3 0 0 也是yes 看它有没有回路 在un的时候做一次判断就可以了 然后是判断连通 在这里采用的方法是扫一遍 如果这个点出现过就判断 ...
- DS实验题 Missile
题目: 提示:并没有精度问题. 原题 NOIP2010 导弹拦截 思路 设源点为A(x1, y1)和B(x2, y2). 第一步,用结构体存节点,包括以下元素: 1.横坐标x 2.纵坐标y 3.节点和 ...
- MyBatis之传入参数
在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和Ja ...
- 常用的API接口,返回JSON格式的服务API接口
物流接口 快递接口: http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号 ps:快递公司编码:申通="shentong&qu ...
- ARM状态和THUMB状态
ARM处理器的工作状态 在ARM的体系结构中,可以工作在三种不同的状态,一是ARM状态,二是Thumb状态及Thumb-2状态,三是调试状态. <嵌入式系统开发与应用教程(第2版)>上介绍 ...
- C#winform中TrackBar的使用
1.手动设置高度(宽):把AutoSize属性设为false 2.重要的事件:Scroll事件和和ValueChanged事件 3.由于TrackBar的Value类型为int,若绑定数据项的最小精度 ...
- Python中dict的特点、更新dict、遍历dict
dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样.而list的查找速度随着元素增加而逐渐下降. 不过dict的查找速度快不是没有代价的,dict的缺点是占用内 ...