首先,对于一个新的事物,新技术点,我的思维导向通常是:Why-How-What黄金圈理论,所以,对于设计模式,首先什么是设计模式,我首先查询了维基百科,给出的定义是:是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。咋一看这个解释也是很模糊,个人觉得,在软件工程里面,设计模式的出现肯定是解决了部分在该领域不合理的存在,开始的时候可能很繁杂,但他解决的是一些未来潜在的一些问题,让我们的程序看起来是那么的优美,以及扩展性非常的强,下面我就简单说下,我理解的工厂模式。

工厂模式其实分:简单工厂,抽象工厂。(纸箱理论,代码其实很简单)

简单工厂:其实就是把类的创建交给工厂来创建。好比:汽车厂,在生产汽车的时,一辆汽车需要很多部件,如果我们实例化的时候,每次都添加很多部件,这样代码的整洁度不够好,而且重复性很高,比如一辆奥迪的某一款车,基本配置都是一样的。所以,我们可以构造一个工厂出来,当厂商规定好所有的工序时,我们就可以用工厂创建汽车了。一个汽车厂有时候也不会只生产一款汽车,我们会根据厂商的需要产生不同款型的汽车。

抽象工厂:其实在上面的例子中汽车工厂的很多零件不是自己创建的,而是其他工厂创建的。而且比如:玻璃,有很多的工厂生产,需要用哪个工厂的玻璃,这个时候又有很多复用的模块,也就是出现了抽象工厂,用来创建不同的工厂,我们在需要用哪个工厂的玻璃,可以根据玻璃的工厂方法进行创建。

对于工厂来说,他也有他的局限性,因为工厂一旦确定了生产的方式,要修改生产规则就会很麻烦,不过这个问题会有其他模式解决。在我们的框架使用中,spring的bean工厂是我们很常用的,因为这里面的bean对象在我们编码的时候已经订好了创建规则,当我们使用的时候,直接可以创建出我们需要用的对象,节省了很多创建对象时,jvm的操作时间。这样大大提高了运行效率。

设计模式的初探--工厂模式相关推荐

  1. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  2. getinstance方法详解_二、设计模式总览及工厂模式详解

    二.架构师内功心法之设计模式 2.架构师内功心法之设计模式 2.1.课程目标 1.通过对本章内容的学习,了解设计模式的由来. 2.介绍设计模式能帮我们解决哪些问题. 3.剖析工厂模式的历史由来及应用场 ...

  3. php工程模式,PHP设计模式(八):工厂模式

    Introduction 在PHP设计模式(七):设计模式分类中我们提到过创建设计模式(Creation patterns),创建设计模式专注于设计对象(Object)和实例(Instance)的创建 ...

  4. 设计模式三—抽象工厂模式

    设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...

  5. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...

  6. java设计模式---三种工厂模式

    工厂模式提供创建对象的接口. 工厂模式分为三类:简单工厂模式(Simple Factory), 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory). GOF ...

  7. 设计模式复习-抽象工厂模式

    设计模式复习-抽象工厂模式 有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展 ...

  8. php的类图怎么生成_PHP设计模式之简单工厂模式

    PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...

  9. 设计模式之四(抽象工厂模式第三回合)

    原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如I ...

最新文章

  1. big endian little endian
  2. 浅析「扣减库存」的方案设计
  3. js中window.location.href,location.href,parent.location.href,top.location.href的用法
  4. 基于 NodeGit 的周报生成工具
  5. ML之LGBMRegressor(Competition):2018年全国大学生计算机技能应用大赛《住房月租金预测大数据赛》——设计思路以及核心代码—191017再次更新
  6. 7-28作业直接刷一下
  7. angle-class
  8. just函数python_提升 Python 性能 Numba 与 Cython
  9. 七、集合框架,Collection、list、set、map老师说集合学好了走到哪里都不怕
  10. ubuntu 11.10 因为gcc版本过高引起的错误,安装 gcc 4.4(转)
  11. asp导出excel文件格式
  12. 伪静态化不正常,电脑打不开贴子,手机可以
  13. 了解HTTP和HTPS的S之差
  14. 选择 Mac 的 15 个充分理由
  15. 固态硬盘(SSD)——NAND闪存芯片(颗粒)QLC、SLC、MLC、TLC
  16. echarts常用属性
  17. 速抢:500份粉丝购书优惠券
  18. c+primer 学习笔记 6
  19. 荣耀MagicBook Pro性能测试,“秀”出硬实力
  20. Linux系统ln -s命令,详解Linux ln 命令

热门文章

  1. python opencv SURF(加速稳健特征)
  2. android代码混淆aar_第三篇:AAR 混淆
  3. 《Adobe Audition CC经典教程》——导读
  4. 打破双亲委派机制有什么用_1.4 打破双亲委派机制
  5. Juniper IPv6 BGP实验
  6. PBFT算法实现过程
  7. loadrunner12.6版本安装Web Tours步骤
  8. 2020 Java开发者数据分析:中国已成为 Java 第一大国
  9. 为什么选择卡尔福导航仪
  10. medoo连接mysql_Medoo