Java设计模式-工厂

Java设计模式中,工厂模式主要包括普通工厂模式以及抽象工厂模式,普通工厂模式是用于制造输出不同类型的对象,抽象工厂模式是用于制造输出不同类型的普通工厂,本文主要描述工厂模式的基本用法。

如上所示,使用普通工厂模式以及抽象工厂模式实现的类图,其中,类之间的关系体现出OOP(面向对象编程)的继承封装多态的基本特性

|---------------------------------------------------------------------------------------------------------------------------------|
| 需求描述 构建不同类型国度,不同的国度构建不同的皇帝、城堡、军队,其中,不同的国度使用抽象工厂模式,每个国度使用普通工厂模式 |
| App类 设计模式运行类,用于测试抽象工厂模式以及普通工厂模式 AppTest类 设计模式测试类,用于测试App类 AbstractFactoryTest类 抽象工厂模式测试类,用于构建普通工厂类,其中,该类与App类构成关联关系 |

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Kingdom类 构建国度类,国度类中包括皇帝、城堡以及军队 FactoryMaker类 该类是Kingdom类的静态内部类,使用抽象工厂模式构建国度普通工厂,其中,该类的方法makeFactory根据输入的国度类型构建不同的国度普通工厂 KingdomFactory接口 国度普通工厂接口,用于实现不同类型的国度普通工厂类,使用普通工厂模式构建不同的国度Kingdom类 ElfKingdomFactory类 国度普通工厂KingdomFactory接口实现类,类实现接口体现出OOP的多态性,一个接口可以被不同的类实现,一个类可以实现多个不同的接口,每个接口类型体现出不同的行为形态 OrcKingdomFactory类 国度普通工厂KingdomFactory接口实现类 KingdomType类 国度类型,是枚举类型,用于构建不同类型的国度普通工厂,其中,包括Elf类型的国度以及Orc类型的国度 |
| King接口 皇帝接口,用于实现不同类型的皇帝 ElfKing类 皇帝King接口实现类,实现Elf类型国度的皇帝 OrcKing类 皇帝King接口实现类,实现Orc类型国度的皇帝 |
| Army接口 军队接口,用于实现不同类型的军队 ElfArmy类 军队Army接口实现类,实现Elf类型国度的军队 OrcArmy类 军队Army接口实现类,实现Orc类型国度的军队 |
| Castle接口 城堡接口,用于实现不同类型的城堡 ElfCastle类 城堡Castle接口实现类,实现Elf类型国度的城堡 OrcCastle类 城堡Castle接口实现类,实现Orc类型国度的城堡 |

相关推荐
星晨雪海8 分钟前
企业标准 DTO 传参 + Controller + Service + 拷贝工具类完整版
java·开发语言·python
龙侠九重天11 分钟前
C# 机器学习数据处理
开发语言·人工智能·机器学习·ai·c#
IT 行者6 小时前
Web逆向工程AI工具:JSHook MCP,80+专业工具让Claude变JS逆向大师
开发语言·javascript·ecmascript·逆向
程序员 沐阳7 小时前
JavaScript 内存与引用:深究深浅拷贝、垃圾回收与 WeakMap/WeakSet
开发语言·javascript·ecmascript
pshdhx_albert7 小时前
AI agent实现打字机效果
java·http·ai编程
Mr_Xuhhh8 小时前
Java泛型进阶:从基础到高级特性完全指南
开发语言·windows·python
沉鱼.448 小时前
第十二届题目
java·前端·算法
He1955018 小时前
wordpress搭建块
开发语言·wordpress·古腾堡·wordpress块
老天文学家了9 小时前
蓝桥杯备战Python
开发语言·python
赫瑞9 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构