一、简单工厂(Simple Factory)模式

Simple Factory 模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。

Simple Factory 模式实际上不是 Gof 23个设计模式中的一员。

二、 简单工厂(Simple Factory)模式角色与结构

工厂类角色Creator (LightSimpleFactory):工厂类在客户端的直接控制下(Create方法)创建产品对象。

抽象产品角色Product (Light):定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象类或接口。

具体产品角色 ConcreteProduct (BulbLight, TubeLight):定义工厂具体加工出的对象。

三、简单工厂(Simple Factory)模式演化

1) Simple Factory 模式演化(一)

除了上面的用法外,在有些情况下Simple Factory可以有抽象产品角色扮演,一个抽象产品类同时是子类的工厂。

2) Simple Factory 模式演化(二)

三个角色全部合并:与单例模式(Singleton)相近,但是有区别。

四、有点与缺点

  • 优点:

  工厂类含有必要的判断逻辑,可以决定什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品。简单工厂模式通过这种做法实现了对责任的分割。

  • 缺点:

  当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的缺点。因为工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。

  同时,系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂。另外,简单工厂模式通常使用静态工厂方法,这使得无法有子类继承,造成工厂角色无法形成基于继承的等级结构

源代码下载地址:http://pan.baidu.com/s/1gdxw7Az

转载于:https://www.cnblogs.com/yuanfang2015/p/4838518.html

简单工厂(Simple Pattern)模式相关推荐

  1. 【Design pattern】简单工厂过渡策略模式

    把自己当做小菜来跟学<大话设计模式>,跟着故事的思路来走 简单工厂模式:实现一个计算器代码 策略模式:商场打折代码 根据大鸟和小菜的故事,一步步的完善问题的过程!

  2. 简单工厂和策略模式结合

    商场促销活动:打折.满额返现等等 主函数对工厂模式和策略模式结合的调用: class Program     {         static void Main(string[] args)     ...

  3. Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)

    前言引入 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 我的 ...

  4. 简单工厂(Simple Factory)

    文章目录 1.代码示例 2.简单工厂模式的定义(实现意图) 工厂模式:通过把创建对象的代码包装起来,做到创建对象的代码与具体的业务逻辑代码相隔离的目的. 工厂模式可以细分为:简单工厂模式,工厂方法模式 ...

  5. 设计模式学习-简单工厂模式

    模式概述: 专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类,简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属 ...

  6. 《设计模式》-简单工厂模式

    今天有点晚哈,周末跑去完了,回来洗澡 洗衣服 吃饭折腾了很长时间. 周末去玩有点感慨啊,去称体重发现自己又胖了... 不行啊 要减肥了啊,学习固然重要,但是身体更重要啊,为了让自己以后不变成胖子,所以 ...

  7. java圣经_Java设计模式圣经连载(01)-简单工厂模式[转载]

    简单工厂模式是类的创建,又叫静态工厂方法(Static Factory Methord)模式.简单工厂模式是由一个工厂对象决定创造哪一种产品类的实例. 1.1.1 工厂模式的几种形态 工厂模式专门负责 ...

  8. 简单工厂+策略模式-上

    这次写了一个简单工厂加策略模式.写的糊里糊涂的.主要实现了这么个功能.输入相应的字符串.输入相应的几个数.自动选择算法.以后到上下机.是想输入时间和相应的数据.自动算出相应的钱数. 故事:富兰克林去黑 ...

  9. 设计模式 学习笔记(1)简单工厂模式、策略模式

    1.简单工厂模式 用一个单独的类来做创造实例的过程. public class OperationFactory{ public static Operation createOperate(stri ...

  10. 设计模式之简单工厂模式与策略模式

    目录 一.简单工厂模式 二.策略模式 三.简单工厂和策略模式的相同和不同点 四.SpringBoot中用简单工厂搭配策略模式 一.简单工厂模式 概述:定义一个工厂类,它可以根据参数的不同返回不同的实例 ...

最新文章

  1. 【教程】新手如何制作简单MAD和AMV,学不会那都是时辰
  2. js遍历追加html子样式,前端基本功:JS(十一)动画封装(CSS样式获取、JSON遍历)...
  3. android studio 导入一个已有的android studio project作为lib使用
  4. USACO-Section1.4 Prime Cryptarithm (搜索)
  5. Python文件操作与matplotlib数据可视化案例一则
  6. XBOX Series X规格如此强悍,如果被破解安装了win10,将对PC行业带来什么影响?
  7. PHP基础知识之————PDO预处理语句
  8. web平台安装程序 无效的uri_计算机二级Web(1):Web技术基础(上)
  9. 数学建模常用方法讲解(一)
  10. 平安银行支付接口 PHP ECSHOP
  11. 飞机大战——图文详解
  12. 曼昆 宏观经济学 笔记
  13. ms08067 分析与利用
  14. cad沿线插入块 lisp_我有一组数有十几万个坐标点,如何利用lisp程序快速导入CAD中,并可以快速处理!...
  15. python实现微信自动投票_Python——开发一个自动化微信投票器【附代码实例方法】...
  16. 聊聊新股市盈率的那些事
  17. 三星老java手机换字体_三星手机设置字体大小与更换默认字体的图文教程
  18. 杏子语录(2019年10月)
  19. OSI七层协议模型、TCP/IP四层模型和五层协议体系结构之间的关系
  20. 涨姿势:在线黑科技小工具,方便快捷

热门文章

  1. python中的scale_Python Matplotlib.pyplot.yscale()用法及代码示例
  2. 若依前后端分离集成Mybatis-Plus
  3. 无人驾驶油电混动牵引车_联合卡车新能源“秀肌肉”!客户已下单的混动/纯电重卡好在哪儿...
  4. mysql 双机备份_mysql双机热备详解及延伸备份
  5. 税收和成本计算器php,企业税收计算器
  6. android没有蓝牙设备,【Android】没有触发LeScanCallback导致无法搜索到蓝牙设备
  7. JDK8新特性(二)之接口新增的两个方法
  8. 筑龙网下载的文件格式是php_为什么使用迅雷下载的文件都是PHP格式的
  9. apk 泊车摄像头_【实测】 有了这款360全景泊车神器 新司机秒变老司机
  10. java判断两线段是否相交