1.使用场景:
1.类不知道自己要创建哪一个对象
2.类用它的子类来指定创建哪个对象
3.客户需要清楚创建了哪一个对象
2.三种不同工厂的区别
简单工厂:针对一种产品。缺点是破坏了开放,封闭原则。
工厂模式: 对简单工厂做了相应的改进,改正了简单工厂破坏开放封闭原则的错误。
抽象工厂:针对于多种产品,和简单工厂以及工厂模式并无太大的关联。
3.UML表示

简单工厂:

工厂模式:

抽象工厂:

4.代码实现
首先是简单工厂的代码实现:

我们以一个手机加工厂的例子展开,首先是Phone接口的相关代码:

public interface Phone {void function();
}

接下来是每一个具体厂商的手机:

public class HuanWei implements Phone{@Overridepublic void function() {System.out.println("不用不是中国人?");}
}public class XiaoMi implements Phone {@Overridepublic void function() {System.out.println("燃烧吧!");}
}public class Iphone implements Phone {@Overridepublic void function() {System.out.println("只要$999");}
}

普通工厂类:

public class PhoneFactory {public static Phone createPhone(String type){if ("小米".equals(type)){return new XiaoMi();}else if ("华为".equals(type)){return new HuanWei();}else if ("Iphone".equals(type)){return new Iphone();}else return  null;}
}

其次是工厂模式的代码实现,Phone接口与简单工厂类似,新增手机工厂接口:

public interface PhoneFactory {Phone createPhone();}
public class Iphone implements Phone {@Overridepublic void function() {System.out.println("只要$999");}
}
public class IphoneFactory implements PhoneFactory {@Overridepublic Phone createPhone() {return new Iphone();}
}

然后是抽象工厂的代码实现,抽象工厂主要是整合多个不同的对象,例如下面的例子:分别使用不同的零件就能整合出手机以及个人PC。
CPU接口:

public interface CPU {void name();
}

其他零部件的接口类似,这里省略。
电子加工工厂接口:

public interface ElectronicFactory {CPU createCpu();GraphicsProcessor createG();Screen createScreen();
}

手机加工工厂类:

public class PhoneFactory implements ElectronicFactory {@Overridepublic CPU createCpu() {return new Pcpu();}@Overridepublic GraphicsProcessor createG() {return new PhoneG();}@Overridepublic Screen createScreen() {return new PhoneScreen();}
}

PC机加工工厂类:

public class PcFactory implements ElectronicFactory {@Overridepublic CPU createCpu() {return new Pcpu();}@Overridepublic GraphicsProcessor createG() {return new PcG();}@Overridepublic Screen createScreen() {return new PcScreen();}
}

最后,给出项目的代码连接:
https://github.com/MemoryExplosion/design_pattern_review/tree/master/src/java/factory

工厂模式(包含3种工厂)相关推荐

  1. JAVA设计模式之工厂模式(三种工厂模式)

    1.工厂模式可以分为三类: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 简单工厂其实不是一个标准的的设 ...

  2. 设计模式(二) ——工厂模式 (3种工厂模式的实现及优缺点)

    1. 工厂模式介绍 工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.在工厂模式中,我们在创建对象时不 ...

  3. 为什么要用工厂模式以及三种工厂模式的联系

    首先声明,本篇博文是博主自己对工厂模式的理解,本篇博文旨在通过生活来讲述,代码量会相对较少(其实没有),尽量通过生活现象去讲述缘由,这样会比较通俗易懂,如果能对大家有启发作用的话,博主深感荣幸. 首先 ...

  4. 设计模式--工厂模式(三种)

    工厂模式 概述 简单工厂 1.基本结构 2.示例 3.优缺点 4.简单工厂+配置文件解除耦合 工厂方法模式 1.概念 2.基本结构 3.示例 4.优缺点 抽象工厂模式 1.概念 2.基本结构 3.示例 ...

  5. 【设计模式自习室】理解工厂模式的三种形式

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

  6. 设计模式学习笔记(三)工厂模式中的简单工厂、工厂方法和抽象工厂模式之间的区别

    设计模式中的工厂模式(Factory Design pattern)是一个比较常用的创建型设计模式,其中可以细分为三种:简单工厂(Simple Factory).工厂方法(Factory Method ...

  7. 抽象工厂模式 java实例 tclhaier_Unity常用的设计模式_工厂模式系列之抽象工厂模式...

    在工厂方法模式中,工厂只负责生产具体的产品,每一个具体的工厂对应着一个具体的产品,工厂方法也具有唯一性,如果有时候我们需要一个工厂方法提供多个产品而不是一个单一的产品,例如:海尔品牌不止生产海尔TV, ...

  8. 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象

    文章目录 案例:外设店铺 简单工厂 工厂方法 抽象工厂 总结 要点 三类工厂模式的特点 三种工厂模式的适用场景 完整代码与文档 工厂模式模式是创建型模式中较为常用的一个,它并不是一个模式,而是三种功能 ...

  9. 工厂模式 java_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  10. java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

最新文章

  1. JVM - ZGC初探
  2. java简单工厂模式_Java 简单工厂模式
  3. ESP8266 Flash
  4. Swift 烧脑体操(三) - 高阶函数
  5. jeecg json返回值显示失败or成功 j.setSuccess(false/*true*/)
  6. 利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件
  7. java商城项目_javaweb实战之商城项目开发(一)
  8. js中的浅拷贝深拷贝深入理解
  9. 【OpenGL】实例渲染示例——草地渲染
  10. LoadRunner教程01:性能测试常见用语
  11. 分辨率和比例尺换算 resolution/scale
  12. Office WPS如何在页眉页脚添加一条横线
  13. 计算机里面的Profile怎么翻译比较好?
  14. Windows C盘清理
  15. mysql数据库查询工具''_数据库查询工具
  16. 如何用python处理excel中时间重合_python读取Excel文件中的时间,并计算时间间隔...
  17. 开入量与开出量的一点总结
  18. Android 8.1 第三方apk通过数据库调用系统定时开关机功能
  19. ”从生命起源到智慧宇宙“全文(英文论文)
  20. PHP 获取服务器ip等详细信息

热门文章

  1. 用优盘装系统看不到计算机本身的硬盘,如果U盘安装系统找不到硬盘怎么办
  2. 天泉证道四句教与价值观
  3. js区号插件(全国电话区号)
  4. 杭州电子科技大学计算机学院院长,杭州电子科技大学计算机学院导师教师师资介绍简介-彭勇...
  5. 音频编码格式与术语汇总
  6. android开发 app消息提醒功能,APP消息提醒设计:ios和android的最佳设计方案 – 25学堂...
  7. risc-v gcc 编译 atomic 指令时产生 illegal operands 错误的解决办法
  8. 触摸屏 java_价值10W大洋的触摸屏技术揭秘。。。
  9. 元宇宙构建基石:三维重建技术
  10. Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises