07GoF之工厂模式

GoF(Gang of Four):四人组,《Design Patterns: Elements of Reusable Object-Oriented Software》(《设计模式》)的作者,设计了23种设计模式.但时代发展,还有其它的设计模式,比如:JavaEE的设计模式(DAO模式、MVC模式等)。

● GoF23种设计模式可分为三大类:

○ 创建型(5个):解决对象创建问题。

■ 单例模式

■ 工厂方法模式

■ 抽象工厂模式

■ 建造者模式

■ 原型模式

○ 结构型(7个):一些类或对象组合在一起的经典结构。

■ 代理模式

■ 装饰模式

■ 适配器模式

■ 组合模式

■ 享元模式

■ 外观模式

■ 桥接模式

○ 行为型(11个):解决类或对象之间的交互问题。

■ 策略模式

■ 模板方法模式

■ 责任链模式

■ 观察者模式

■ 迭代子模式

■ 命令模式

■ 备忘录模式

■ 状态模式

■ 访问者模式

■ 中介者模式

■ 解释器模式

● 工厂模式是解决对象创建问题的,所以工厂模式属于创建型设计模式。这里为什么学习工厂模式呢?这是因为Spring框架底层使用了大量的工厂模式。


为什么学工厂模式?

Spring底层就是通过工厂模式+XML+反射机制实现的.


工厂模式的三种形态
● 第一种:简单工厂模式(Simple Factory):不属于23种设计模式之一。简单工厂模式又叫做:静态工厂方法模式。简单工厂模式是工厂方法模式的一种特殊实现。

● 第二种:工厂方法模式(Factory Method):是23种设计模式之一。

● 第三种:抽象工厂模式(Abstract Factory):是23种设计模式之一。


简单工厂模式

简单工厂模式的优点

● 客户端程序不需要关心对象的创建细节,需要哪个对象时,只需要向工厂索要即可,初步实现了责任的分离。客户端只负责"消费",工厂负责"生产"。生产和消费分离。

简单工厂模式的缺点

● 缺点1:工厂类集中了所有产品的创造逻辑,形成一个无所不知的全能类,有人把它叫做上帝类。显然工厂类非常关键,不能出问题,一旦出问题,整个系统瘫痪。

● 缺点2:不符合OCP开闭原则,在进行系统扩展时,需要修改工厂类。

简单工厂模式的角色包括三个:

● 抽象产品 角色

● 具体产品 角色

● 工厂类 角色

相关推荐
Jul1en_13 小时前
【Spring】实现验证码功能
java·后端·spring
小光学长14 小时前
ssm农民养殖经验交流与分享平台bc046578(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring
在坚持一下我可没意见14 小时前
Spring 开发小白学习过程中常用通用配置文件,即拿即用!(持续更新中)
java·数据库·后端·学习·spring·tomcat·mybatis
m0_7400437314 小时前
SpringBoot03-Mybatis框架入门
java·数据库·spring boot·sql·spring·mybatis
默 语14 小时前
用Java撸一个AI聊天机器人:从零到一的踩坑实录
java·人工智能·spring·ai·机器人·spring ai
jiayong2314 小时前
Spring XML解析与BeanDefinition注册详解
xml·java·spring
It's now1 天前
Spring AI 基础开发流程
java·人工智能·后端·spring
code bean1 天前
【CMake】为什么需要清理 CMake 缓存文件?深入理解 CMake 生成器切换机制
java·spring·缓存
皮卡龙1 天前
Spring MVC 接收请求参数的核心
java·spring·mvc
没有bug.的程序员1 天前
高频IO服务优化实战指南
java·jvm·spring·容器