工厂模式的简单总结

本文介绍了设计模式中的简单工厂、工厂方法和抽象工厂模式,通过实例展示了如何降低耦合性和提高代码可扩展性。简单工厂模式通过工厂来实例化所需对象,而工厂方法将实例化过程推迟到子类,遵循开闭原则。抽象工厂则提供创建一系列相关对象的接口,允许客户端不关心具体实现。最后讨论了如何使用反射和配置文件进一步解耦代码。
摘要由CSDN通过智能技术生成

工厂模式

我们在学抽象工厂之前所见到的设计模式的第一个代码就是小菜所写的第一款计算器代码,他把所有的运算都写在了一个运算类里,然后通过客户端去引用那个运算类来实现计算器的运算,代码如下:

过高的耦合性使它的安全性极低,因此在大鸟的教导下,有了第二版的代码

在这里插入图片描述

它把加减乘除的运算封装到各个类里,但它困难在于不知道怎么让计算机知道"我"想用的是哪一款

因此学习到了

简单工厂模式

什么是简单工厂模式,代码如下:
在这里插入图片描述

通过简单工厂模式来判断想要的是什么,然后工厂来实例化出想要的对象进行运算

好处在于当修改功能的时候,只需要修改对应的类,添加功能的时候也不会对其他的功能造成影响

然后我们学到了工厂方法

工厂方法

工厂方法:定义一个用于创建对象的接口,让子类决定用于实例化哪个类,工厂方法使一个类的实例化延迟到其子类,类图如下:
在这里插入图片描述

工厂方法把简单工厂的内部逻辑判断搞到了客户端代码来运行牺牲了灵活性,符合了开闭原则,和单一职责

抽象工厂

提供一个创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类

好处是易于交换产品系列 让具体的创建实例的过程和客户端分离
在这里插入图片描述

这个模式有个缺点就是增加功能的话要增加三个类才能变化,灵活性低

我们选择用工厂方法来改造抽象工厂

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eyyvOkha-1669338497362)(工厂模式.assets/image-20221125090506556.png)]

就有了这个DataAccess类

在这里插入图片描述

代码如上所示

这个方法实现了解耦的目的

最后我们用反射和配置文件来完成去除switch或者if 的操作带来的耦合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值