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类型国度的城堡 |

相关推荐
星河耀银海几秒前
C++面向对象编程:从基础到实战
开发语言·c++
HUST7 分钟前
C语言第十一讲: 深入理解指针(1)
c语言·开发语言
Ccjf酷儿17 分钟前
C++语言程序设计 (郑莉)第三章 函数
开发语言·c++
独自破碎E19 分钟前
PO、VO、BO、DTO、DAO、POJO有什么区别?
java
czlczl2002092520 分钟前
从 SSO 登录到跨系统资源访问:OAuth2 全链路交互详解
java·spring boot·后端·spring·架构
茶本无香24 分钟前
单例模式深度解析:饿汉式与懒汉式的实现与选择
java·单例模式
爬山算法28 分钟前
Hibernate(29)什么是Hibernate的连接池?
java·后端·hibernate
ytttr87330 分钟前
基于人工蜂群算法(ABC)的MATLAB数值计算求解框架
开发语言·算法·matlab
Fuly102431 分钟前
软件研发类项目流程
java