简单工厂模式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)的更多相关文章

  1. Golang设计模式—简单工厂模式(Simple Factory Pattern)

    Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...

  2. 3. 星际争霸之php设计模式--简单工厂模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. 深入浅出设计模式——简单工厂模式(Simple Factory)

    介绍简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,可以说是工厂方法模式的一个引导,所以我想 ...

  4. 设计模式 | 简单工厂模式(static factory method)

    按理说应该把书全都看完一遍,再开始写博客比较科学,会有比较全面的认识. 但是既然都决定要按规律更新博客了,只能看完一个设计模式写一篇了. 也算是逼自己思考了,不是看完就过,至少得把代码自己都敲一遍. ...

  5. python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)

    十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...

  6. 设计模式 — 简单工厂模式(Simple Factory)

    定义:定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常有公共的父类. 模式类型:创建型模型 Factory(工厂角色):即工厂类,负责实现创建所有产品实例的内部逻辑:工厂类可以 ...

  7. Java设计模式-简单工厂模式(Static Factory Method)

    简单工厂模式(Static Factory Method) 简单工厂模式是类的创建模式,又叫静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂对象决定创建出哪一种 ...

  8. C++设计模式——简单工厂模式

    简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些.因为它至少不是Gof23种设计模式之一.但它在实际的编程中经常被用 ...

  9. 设计模式之工厂模式(Factory)

    设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...

随机推荐

  1. Grunt - 前端开发所见即所得

    首先要安装全局的grunt-cli sudo npm install grunt-cli -g 1,项目中初始化npm文件,项目名不要和[关键词]如grunt重复,一直回车即可 npm init 2, ...

  2. 三层架构实例 VB.NET版

    三层实例 首先发现感慨,对于三成这块,用到都是一些面向对象的特征,尤其是对象的实例化.如果你不是很注意的话,那么,你就会一头雾水,就像我一样,慢慢的雾里看花,最后也是走出来的,不过用的事件是相当的. ...

  3. [转]Web.config配置文件详解(新手必看)

    本文转自:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配 ...

  4. centos fastdfs 多服务器 多硬盘 多组 配置详解

    说正文前,先感谢happy_fish100提供的fastdfs,轻量级的分布式文件服务器. 随着用户量的变大,图片,视频等的量会不断的增大,这个时候一个硬盘可能不够用了,就要加硬盘.硬盘加不了时,就要 ...

  5. 《Pro Git》笔记1:起步

    第一章 起步 1.关于版本控制 版本控制用于记录和追踪目录结构和文件内容变化,能够追溯过去的任何修改和变化,并恢复到任何历史状态. 版本控制系统可以按照发展过程分成以下几类: 目录备份.记录版本变化最 ...

  6. Note: RewriteCond规则

    如果文件存在,就直接访问文件,不进行下面的RewriteRule:RewriteCond %{REQUEST_FILENAME} !-f 如果目录存在,就直接访问目录,不进行下面的RewriteRul ...

  7. Yii源码阅读笔记(十二)

    Action类,控制器中方法的基类: namespace yii\base; use Yii; /** * Action is the base class for all controller ac ...

  8. EFDC主控文件efdc.inp文件的xml格式化处理——转载http://blog.sina.com.cn/s/articlelist_1584892573_0_1.html

    在对EFDC模型进行系统集成时,虽然可以通过一行一行读来进行解析处理,但那将是一个繁琐的工作.我们经过xml格式化处理后,再经xsd转成Dataset类对象,那么整个主控文件就是一个数据库表集合,对其 ...

  9. 【转】Unity3D研究院之通过C#使用Advanced CSharp Messenger(五十)

    http://www.xuanyusong.com/archives/2165 Advanced CSharp Messenger 属于C#事件的一种. 维基百科中由详细的说明http://wiki. ...

  10. 【转】const 是左结合的,若左边为空,则再向右结合

    const 是左结合的,若左边为空,则再向右结合 一.指向  const  对象的指针指向  const  对象的指针,指的是指针指向的对象的内容是const的,不可修改,但指针本身(即指针的值)是可 ...