前一阵子学习了Java 中据说是最简单的设计模式的 单例模式,想一起讨论学习的小伙伴请点击这里:
Java 设计模式之单例模式

那么今天就把学习的工厂模式记录下来

  • 工厂模式:
    实现了创建者和调用者的分离
    详细分类:简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式完全遵守了面向对象设计的基本原则 即:

  • 开闭原则:一个软件的实体应该对拓展开放,对修改关闭。
  • 依赖倒转原则:要针对接口编程,不要针对实现编程。
  • 迪米特法则:只与你直接的朋友通信,不与陌生人通信。

首先学习简单工厂模式

先举个小例子,假如我们生产两种汽车,分别是奥迪和比亚迪,常规情况下,我们直接new 一个奥迪或者比亚迪

public class AudiCar implements Car{@Overridepublic void create() {System.out.println("生产奥迪汽车");}
}public interface Car {void create();
}

写个测试类

public class FactoryClient1 {public static void main(String[] args) {AudiCar audiCar = new AudiCar();BydCar bydCar = new BydCar();audiCar.create();bydCar.create();}
}打印结果:
生产奥迪汽车
生产比亚迪汽车

但是这样我们每次都要修改我们的客户端,用户是不用知道它是怎么具体生产的,所以我们将它们装进一个工厂里,

public class CarFactorySimple {public static Car createCar(String type) {if ("audi".equals(type)) {return new AudiCar();} else if ("byd".equals(type)) {return new BydCar();}return null;}
}

还有一种写法

public class CarFactorySimple {public static Car createAudiCar() {return new AudiCar();}public static Car createBydCar() {return new BydCar();}
}

由以上可见,简单工厂对于扩展产品方面就显得不是很好了,我们一直要对其进行修改,所以:

  • 简单工厂模式一般也称作静态工厂模式,就是工厂方法一般采取静态方法的模式,通过接受不同参数来生产不同的对象。
  • 对于增加新产品显得无能为力,不修改代码不能完成扩展。

违反了我们的开闭原则。如何避免这种问题呢,这就是下面学习的工厂方法模式了。
关于工厂方法模式,请跳转Java 设计模式之工厂模式(工厂方法模式)

关于简单工厂模式,欢迎朋友们一起学习讨论。

Java设计模式之 工厂模式(简单工厂模式)相关推荐

  1. Java设计模式(二)简单工厂模式—设计模式六大原则

    文章目录 设计模式六大原则 1. 开闭原则 2. 里氏代换原则 3. 依赖倒转原则 4. 接口隔离原则 5. 迪米特法则(最少知道原则) 6. 合成复用原则 工厂设计模式 什么是工厂模式 工厂模式的好 ...

  2. Java设计模式(十二) 策略模式

    策略模式介绍 策略模式定义 策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换.客户端可以自行决定使用哪种算法. 策略模式类图 策略模 ...

  3. 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式

    设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...

  4. 设计模式(1)--简单工厂模式、策略模式

    设计模式(1)--简单工厂模式.策略模式 1. 简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static ...

  5. Java设计模式(5):工厂模式

    5,工厂模式(Factory) 工厂模式在逻辑上可以分为三种:简单工厂模式,工厂方法模式和抽象工厂模式.其中简单工厂模式不属于23种设计模式. 从实际中理解三种工厂模式,大致可以理解为工厂发展的三个阶 ...

  6. 设计模式(0)简单工厂模式

    0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...

  7. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂——区分“变与不变”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂--区分"变与不变" 先来说说构造器 在介绍工厂模式之前,为了辅助大家的理解,我想先在这儿给大家介绍 ...

  8. 设计模式(4)—— 简单工厂模式(Simple Factory,创建型)

    1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.简单工厂模式(Simple Factory Pattern)属于创建型模式.简单工厂模式,由一个工厂对象决定创建出哪一种产品类的实例, ...

  9. 设计模式-创建型模式-简单工厂模式

    工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...

  10. c++switch实现猜拳_策略模式+简单工厂+注解消除 if-else/switch-case

    消除代码中的 if-else/switch-case 在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去实现.做的 ...

最新文章

  1. mysql 查询结果转置_转置MySQL查询 – 需要将行放入列中
  2. 批命令 set /a与set /p有哪些区别
  3. Oracle存储过程(增、删、改)写法
  4. 查看操作系统版本linux_查看电脑操作系统版本(适用于Mac OS)
  5. C语言再学习 -- 创建excel文件
  6. 优化委托的 DynamicInvoke
  7. 数据结构实验 4.括号画家
  8. 自动驾驶——localization的学习笔记
  9. task 13-change the lcd to 32bpp form 16bpp.
  10. cad插入块_「AutoCAD之属性块」别怕难,从零做起,制作属性块只需6步走
  11. 达梦DISQL执行脚本方法总结
  12. Matlab中dir使用中遇到的一些问题
  13. 可分离变量的微分方程
  14. 6种时间管理方法概要
  15. 慕课网付费视频 linux,分享给 Linux 用户的 10 有用工具
  16. Ghost for Linux 出色的硬盘对拷工具(转)
  17. 【Security】可信网络连接
  18. 关于VERIFY_OCTAL_PERMISSIONS权限检查
  19. 超(效)等位基因,亚(效)等位基因,反(效)等位基因,新(效)等位基因
  20. 数据结构课程设计---赛事统计,校园导航,算术表达式

热门文章

  1. 详解,python求矩阵的秩,你肯定能看懂
  2. qq群搜索关键词排名优化
  3. Ardunio开发实例-MS5611气压传感器
  4. AcWing第52场周赛
  5. 查看微信好友是否删除自己
  6. PSCP工具的使用教程
  7. “果粉”速递:简单9步轻松绕过iCloud 激活锁
  8. 反射方程的分解、预计算BRDF
  9. BootStrap中修改navbar导航条的默认高度
  10. 标准化软件应用程序设计