工厂模式常见的三种:

  1. 简单工厂模式
  2. 工厂方法模式
  3. 抽象工厂模式

工厂模式优点:

  • 代码清晰,有效的封装变化
  • 对调用者屏蔽具体的产品类
  • 降低耦合度

工厂方法模式:

四要素:

  1. 工程接口,核心。
  2. 工程实现
  3. 产品接口,规范
  4. 产品实现

适用场景:

  • 生成复杂对象的地方
  • 解耦
  • 需要扩展性的时候

例子:

如果我们要new一个车子的时候,还要new轮子,发动机啥的,很麻烦,可以在工厂方法模式中实现

类图

代码示例

interface IProduct {  public void productMethod();
}  class Product implements IProduct {  public void productMethod() {  System.out.println(“产品”);  }
}  interface IFactory {  public IProduct createProduct();
}  class Factory implements IFactory {  public IProduct createProduct() {  return new Product();  }
}  public class Client {  public static void main(String[] args) {  IFactory factory = new Factory();  IProduct prodect = factory.createProduct();  prodect.productMethod();  }
}  

学习资料:
- 卡奴达摩的专栏

工厂方法模式--要车,轮子你得帮我装!相关推荐

  1. java简单工厂模式实例造车,JAVA设计模式学习5——工厂方法模式

    工厂方法模式(Factory Method)又称虚拟构造子模式,可以说是简单工厂的抽象,也可以理解为简单工厂是退化了的工厂方法模式,其表现在简单工厂丧失了工厂方法的多态性.我们前一节中提到当产品结构变 ...

  2. linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...

    模式简介 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那个类,其使一个类的实例化延迟到其子类中. 前边我们学习了简单工厂模式,简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断,根据客 ...

  3. Java设计模式-工厂方法模式和抽象工厂模式

    工厂方法模式定义: 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)."一对一"的关系 1,一抽象工厂类派生出多个具体工厂类: 2, ...

  4. .NET设计模式(5):工厂方法模式(Factory Method)

    概述 在软件系统中,经常面临着"某个对象"的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?提供一种封装机制来隔离出 ...

  5. 工厂方法模式与抽象工厂模式

    本文是转的 一.引子        话说十年前,有一个暴发户,他家有三辆汽车--Benz奔驰.Bmw宝马.Audi奥迪,还雇了司机为他开车.不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说&quo ...

  6. 工厂方法模式_工厂方法模式

    工厂方法模式是简单工厂模式的升级版,简单工厂模式不符合设计模式的原则(即:单一职责,开闭原则) 优点: 职责明确,扩展方便 缺点:需要创建多个工厂 实现步骤: 1.将工厂通用方法抽取接口 (例如:IF ...

  7. 简单工厂模式+工厂方法模式

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

  8. getresourceasstream方法_【设计模式】第三篇:一篇搞定工厂模式【简单工厂、工厂方法模式、抽象工厂模式】...

    文章系列目录(持续更新中): [设计模式]第一篇:概述.耦合.UML.七大原则,详细分析总结(基于Java) [设计模式]第二篇:单例模式的几种实现And反射对其的破坏 一 为什么要用工厂模式 之前讲 ...

  9. JAVA设计模式 - 工厂方法模式

    工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...

最新文章

  1. Bert时代的创新:Bert应用模式比较及其它 | 技术头条
  2. python替代_【Python】选择ipython替代python的理由
  3. Samba安装配置用于虚拟机共享文件_很详细
  4. Python小游戏(小蜜蜂)
  5. Unity协程(Coroutine)原理深入剖析再续
  6. Windows下pip 离线包安装
  7. 《Python编程从入门到实践》记录之Python函数定义、使用
  8. php中计算时间差的几种方法,php计算时间差的方法
  9. JS之Window对象
  10. 业余长跑爱好者最后膝盖都怎样了?
  11. OpenAI公布强化学习新算法,可控制复杂机器人
  12. 读caffe源码:gflags的使用
  13. python在材料方面的应用_Python数据科学(一)- python与数据科学应用(Ⅰ)
  14. C#读写日志文本文件
  15. 二维凸包算法(Andrew算法)
  16. PDF文件怎么转Word才能不乱码?这样做就可以了
  17. 概率论与数理统计 第四版 课后习题解析
  18. 为什么成功启动ngnix之后还是无法用ip地址访问网站
  19. matplotlib中线宽linewidth的默认值是多少?如何查看?如何设置/设定?如何修改?
  20. 【题解】Luogu-P4774 [NOI2018] 屠龙勇士

热门文章

  1. 2022/10/21 输入一批考试分数,用-1作为结束标志,若输入大于100分,则提示重新输入,然后计算最高分、最低分与平均分
  2. 使用Python批量转换彩色图片到灰度图片
  3. 微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发
  4. 众安保险-前端笔试 2023-3-28
  5. Path.cwd()使用注意事项(使用Path.cwd出现的bug)
  6. 联想微型计算机开机黑屏什么原因,联想笔记本电脑开机黑屏的现象及原因分析...
  7. 七夕节特辑,浏览器桌面太无聊,为什么不做个挂件来陪自己呢?
  8. Fire Emblem Echoes
  9. linker脚本文件知识
  10. 人工智能Java SDK:大数据与AI技术相结合 - kafka-人脸检测