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开闭原则,在进行系统扩展时,需要修改工厂类。

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

● 抽象产品 角色

● 具体产品 角色

● 工厂类 角色

相关推荐
这周也會开心6 分钟前
SpringMVC和SSM的执行流程
spring
踏浪无痕3 小时前
手写Spring事务框架:200行代码揭开@Transactional的神秘面纱( 附完整源代码)
spring boot·spring·spring cloud
踏浪无痕3 小时前
5个测试用例带你彻底理解Spring事务传播行为( 附完整源代码)
spring boot·spring·spring cloud
一 乐4 小时前
购物|明星周边商城|基于springboot的明星周边商城系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·spring
y1y1z4 小时前
Spring框架教程
java·后端·spring
稚辉君.MCA_P8_Java5 小时前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法
I***t7165 小时前
【MyBatis】spring整合mybatis教程(详细易懂)
java·spring·mybatis
z***02605 小时前
SpringBoot创建动态定时任务的几种方式
java·spring boot·spring
q***31896 小时前
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
xml·spring·logback
就叫飞六吧7 小时前
Spring MVC 接口命名为什么会有 *.do/actions等身影?
java·spring·mvc