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

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

● 抽象产品 角色

● 具体产品 角色

● 工厂类 角色

相关推荐
步行cgn8 小时前
Spring 启动报错:BeanFactory not initialized 的原因与解决
java·python·spring
步行cgn8 小时前
Spring 报错:No bean class specified on bean definition 的原因与解决
java·后端·spring
重生之我是Java开发战士10 小时前
【Spring Cloud】Nacos注册中心
后端·spring·spring cloud
Wang's Blog10 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring
Wang's Blog10 小时前
Java框架快速入门: Spring Security+OAuth2之多因子认证与TOTP实战
java·spring·ui
vx_Biye_Design12 小时前
springboot游泳馆系统93765-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·spring·课程设计
名字还没想好☜12 小时前
Java NIO ByteBuffer 实战:flip/clear/compact 三个绕晕人的方法与 position/limit 心智模型
java·开发语言·后端·spring·nio
Wang's Blog12 小时前
Java框架快速入门: Spring Security+OAuth2之短信服务多供应商动态切换(阿里云与LeanCloud)
java·spring·阿里云
卓怡学长13 小时前
w233基于vue和springboot的宠物管理系统的设计与实现
java·vue.js·spring boot·spring·intellij-idea
Wang's Blog14 小时前
Java框架快速入门: Spring Security+OAuth2之邮件验证码发送(SMTP与API方式)
java·数据库·spring