【Java设计模式系列】工厂方法模式(上)

简介: 【Java设计模式系列】工厂方法模式(上)

https://github.com/Wasabi1234/design-patterns

1 简介

  • 定义
    定义一个创建对象的接口。但让实现这个接口的类决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。
  • 类型
    创建型

通用类图

image.png

在工厂方法模式中:

  • 抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义
  • Creator为抽象创建类,即抽象工厂,具体如何创建产品类是由具体实现工厂ConcreteCreator完成

2 简单工厂模式的升级

image.png

image.png

image.png

image.png

image.png

案例一

对造人过程进行分析,该过程涉及三个对象:女娲、八卦炉、三种不同肤色的人

  • 女娲可以使用场景类Client表示
  • 八卦炉类似于一个工厂,负责制造生产产品(即人类)
  • 三种不同肤色的人,他们都是同一个接口下的不同实现类,对于八卦炉来说都是它生产出的产品
  • image.png
  • 接口Human是对人类的总称,每个人种都至少具有两个方法
  • image.png
  • 黑色人种

image.png

  • 黄色人种
  • image.png
  • 白色人种
  • image.png
  • 所有人种定义完毕,下一步就是定义一个八卦炉,然后烧制。

最可能给八卦炉下达什么样的生产命令呢?

应该是


给我生产出一个黄色人种(YellowHuman类)

而不会是


给我生产一个会走、会跑、会说话、皮肤是黄色的人种

因为这样的命令增加了交流的成本,作为一个生产的管理者,只要知道生产什么就可以了,无需事物具体信息

image.png

通过定义泛型对createHuman的输入参数产生两层限制

  • 必须是Class类型
  • 必须是Human的实现类
    其中的T表示,只要实现了Human接口的类都可以作为参数

只有一个八卦炉,其实现生产人类的方法

image.png

人种有了,八卦炉也有了,剩下的工作就是女娲采集黄土,然后命令八卦炉开始生产

image.png

人种有了,八卦炉有了,负责生产的女娲也有了

运行一下,结果如下所示

image.png

目录
相关文章
|
5天前
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。
|
2月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
|
2月前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
2月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
2月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
41 4
|
2月前
|
设计模式 安全 Java
Kotlin - 改良设计模式 - 构建者模式
Kotlin - 改良设计模式 - 构建者模式
|
2月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
46 1
|
3月前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
58 0
[Java]23种设计模式
|
2月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。对于快速学习Kotlin语法,推荐查看“简洁”系列教程。本文重点介绍了构建者模式在Kotlin中的应用与改良,包括如何使用具名可选参数简化复杂对象的创建过程,以及如何在初始化代码块中对参数进行约束和校验。
34 3