【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

目录
相关文章
|
1月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
218 2
|
1月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
264 0
|
3月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
1月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
262 35
|
1月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
223 8
|
3月前
|
设计模式 安全 Java
Java设计模式(一):单例模式与工厂模式
本文详解单例模式与工厂模式的核心实现及应用,涵盖饿汉式、懒汉式、双重检查锁、工厂方法、抽象工厂等设计模式,并结合数据库连接池与支付系统实战案例,助你掌握设计模式精髓,提升代码专业性与可维护性。
|
3月前
|
设计模式 XML 安全
Java枚举(Enum)与设计模式应用
Java枚举不仅是类型安全的常量,还具备面向对象能力,可添加属性与方法,实现接口。通过枚举能优雅实现单例、策略、状态等设计模式,具备线程安全、序列化安全等特性,是编写高效、安全代码的利器。
|
6月前
|
设计模式 Java 数据库连接
【设计模式】【创建型模式】工厂方法模式(Factory Methods)
一、入门 什么是工厂方法模式? 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟
197 16
|
6月前
|
设计模式 负载均衡 监控
并发设计模式实战系列(2):领导者/追随者模式
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发设计模式实战系列,第二章领导者/追随者(Leader/Followers)模式,废话不多说直接开始~
202 0
|
6月前
|
设计模式 监控 Java
并发设计模式实战系列(1):半同步/半异步模式
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发设计模式实战系列,第一章半同步/半异步(Half-Sync/Half-Async)模式,废话不多说直接开始~
190 0

热门文章

最新文章