【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

目录
相关文章
|
10天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
19 0
|
11天前
|
设计模式 Java 开发者
设计模式揭秘:Java世界的七大奇迹
【4月更文挑战第7天】探索Java设计模式:单例、工厂方法、抽象工厂、建造者、原型、适配器和观察者,助你构建健壮、灵活的软件系统。了解这些模式如何提升代码复用、可维护性,以及在特定场景下的应用,如资源管理、接口兼容和事件监听。掌握设计模式,但也需根据实际情况权衡,打造高效、优雅的软件解决方案。
|
6天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
11天前
|
设计模式 监控 Java
设计模式 - 观察者模式(Observer):Java中的战术与策略
【4月更文挑战第7天】观察者模式是构建可维护、可扩展系统的关键,它在Java中通过`Observable`和`Observer`实现对象间一对多的依赖关系,常用于事件处理、数据绑定和同步。该模式支持事件驱动架构、数据同步和实时系统,但需注意避免循环依赖、控制通知粒度,并关注性能和内存泄漏问题。通过明确角色、使用抽象和管理观察者注册,可最大化其效果。
|
3天前
|
设计模式 算法 Java
小谈设计模式(30)—Java设计模式总结
小谈设计模式(30)—Java设计模式总结
|
4天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
11 1
|
6天前
|
存储 Java
模式匹配魔法:Java 21中switch语句的巨大进化
模式匹配魔法:Java 21中switch语句的巨大进化
9 0
|
6天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式
|
8天前
|
设计模式 算法 Java
23种设计模式,模板方法模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
11 0
|
9天前
|
设计模式 Java
23种设计模式,状态模式的概念优缺点以及JAVA代码举例
【4月更文挑战第9天】状态模式是一种行为设计模式,允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改了它的类。
25 4