简单工厂模式


举个两个例子:

我输入两个数字和(+ - * /)其中一个符号,计算出两个数的结果.

饲养员让(狗 猫 鸟 猪)其中一个动物 叫

这里就是一个简单的工厂模式,

用户只需要提供他需要的接口,而不需要知道具体的实现

工厂判断用户提供的接口,创建对应的子类对象, 返回父类变量给用户(这里涉及里氏替换原则:声明父类变量替换子类对象)

当后面追加新的操作类例如:求根类  求平方类 ,

从数据安全角度:

只需要创建新的类继承于Operation抽象类 ,从而不影响其他操作类(+ - * /),降低耦合.

从维护方便角度:

而工厂类也只需要增加case分支,用户声明的oper始终指向他所需要的对象,方法也是他指向的子类的方法

所以,简单工厂模式强调的是 用户---工厂  之间的交互,用户不必知道工厂内部的实现,  工厂只需要根据用户提供的接口 自动生成对应 的"产品" 供用户调用

以下引用自百度百科:

优点
工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。
缺点
由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;
这些缺点在工厂方法模式中得到了一定的克服。

转载于:https://www.cnblogs.com/huangjzh/p/3908983.html

(设计模式之一)浅析简单工厂模式相关推荐

  1. 设计模式 笔记4 | 简单工厂模式 在源码中的应用 | Calendar 日历 | 源码浅析 | 使用总结 | 建造者模式

    文章目录 一.Calendar 日历类 1.1 内部属性 1.2 设置时间属性值 1.3 获取时间属性 1.4 使用 Calander 计算时间 二.Calender 类中的设计模式 2.1 简单工厂 ...

  2. 23种设计模式 -----Day01:简单工厂模式

    目录 前言 1.设计模式(Design pattern)定义 2.为什么要使用设计模式(使用设计模式的意义) 3.设计原则 a.单一职责原则 b.开放封闭原则 c.里氏代换原则 d.迪米特法则 e.依 ...

  3. 大话设计模式Python实现-简单工厂模式

    简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用简单工厂模式实现一个简单的四则运算 1 #!/us ...

  4. 手撕设计模式之「简单工厂模式」(Java描述)

    前言 利用简单工厂模式可以实现对象创建和业务逻辑处理的分离,但存在工厂类职责过重,增添新产品违背开闭原则等问题.它不属于GoF 23种设计模式之一,但是它可以作为学习工厂方法模式前的一个很好的引导. ...

  5. 设计模式----2(简单工厂模式的概念,简单工厂模式的实现,简单工厂模式的优缺点)

    简单工厂模式 简单工厂模式的概念 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负 责创建其他类的实例,被创建的实例通常都具有共同的父类. 具体分类 工厂(Creator ...

  6. 设计模式(1):简单工厂模式(Simple Factory Pattern)

    1. 从一个简单的例子开始 在众多的设计原则中,有一条原则是这么说的:要针对接口编程,不要针对实现编程. 针对接口编程的话,可以使用不同的实现类来创建这个对象.比如需要一个List: List< ...

  7. Java描述设计模式(02):简单工厂模式

    一.生活场景简介 1.引入场景 订餐流程简单描述 1).食品抽象类,规定食品的基础属性操作 2).鱼类,鸡肉类食品类扩展 3).订餐流程类,根据食品名称,加工指定类型食品 4).模拟客户端预定操作 2 ...

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

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

  9. 从王者荣耀看设计模式(四.简单工厂模式)

    从王者荣耀看设计模式(简单工厂模式) 一.简介 游戏开始前,玩家可从英雄池自由挑选将要出战的英雄 二.简单工厂模式 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫 ...

最新文章

  1. 数据挖据之GeoHash核心原理解析
  2. linux 查看cpu和磁盘使用情况
  3. 在10分钟内在新Mac中设置Java开发环境(更新)
  4. centos系统时间不准
  5. c语言课程设计实验设备,C语言课程设计课程设计_力学实验设备管理系统
  6. 问题TypeError: __init__() takes 1 positional argument but 2 were given解决方案
  7. ASP.NET 页面传值方法的一些事情儿。
  8. jsoup爬虫实战详解之新浪
  9. java实习实训管理系统ssm
  10. 教你记录借还款,查看收支账户记录
  11. Guitar Pro新手入门教程
  12. 2022腾讯云学生云服务器申请攻略(25岁以下免学生认证)!
  13. webp格式怎么改png?如何将webp转换格式?
  14. NetCore mysql Connection open error . The given key ‘25971‘ was not present in the dictionary
  15. Qt系列文章之 QAbstractItemModel(下)
  16. python控制软件自动化测试,资讯详情-用python来使用Airtest 自动化工具-柠檬班-自动化测试-软件测试培训-自学官网...
  17. iOS 高德地图开发详解
  18. HEG安装及hdf文件转tif文件批处理
  19. 2022-2023年控制领域、工程领域、计算机领域、人工智能领域国家重点实验室开放基金申请指南
  20. Yoyo OS安装过程

热门文章

  1. 视频号的商业想象空间,在前天更新后,会在以下3个方面
  2. 什么样的老板不适合找运营?
  3. 两种方案的demo示例
  4. Python疑难问题:「」与list()哪个快?为什么快?
  5. webservice接口和restful接口哪个更好?
  6. Truffle测试框架
  7. 类的构造函数和析构函数、默认构造函数
  8. sql运算符_SQL LIKE运算符概述
  9. 基于SQL Server策略的管理–类别和数据库订阅
  10. sql azure 语法_如何在SQL 2016中使用Azure Key Vault使用AlwaysOn配置TDE数据库