工厂模式 connectionFactory/sessionFactory

  • 编程中,在一个 A 类中通过 new 的方式实例化了类 B,那么 A 类和 B 类之间就存在关联(耦合)
  • 后期因为需要修改了 B 类的代码和使用方式,比如构造函数中传入参数,那么 A 类也要跟着修改,一个类的依赖可能影响不大,但若有多个类依赖了 B 类,那么这个工作量将会相当的大,容易出现修改错误,也会产生很多的重复代码,这无疑是件非常痛苦的事;
  • 这种情况下,就需要将创建实例的工作从调用方(A类)中分离,与调用方「解耦」,也就是使用工厂方法创建实例的工作封装起来(「减少代码重复」),由工厂管理对象的创建逻辑,调用方不需要知道具体的创建过程,只管使用,「而降低调用者因为创建逻辑导致的错误」;

总结:适应扩展(多种构造方式) ,直接调用(如果构造复杂,不止一个new)

参考:

Java 简单工厂模式和工厂模式(类图及实现)_简单工厂类图_宇宙超级无敌霹雳西瓜君的博客-CSDN博客 扩展代码不修改原有代码

设计模式:抽象工厂模式,结合类图秒懂! - 简书

如果有一个应用要在两个系统上运行,应该怎么设计?是编写两套程序运行于不同的系统上?这样实在是太浪费资源了,我们可以通过抽象工厂模式屏蔽掉操作系统对应用的影响

我们可以用操作系统来举例,现在市面上用的最多的两种PC端操作系统是windows和Linux,两个系统都有共同类型的组件,如文件夹,按钮,文本等。套用下抽象工厂的通用类图,我们不难发现,两个系统就相当于产品组抽象类AbstractProductA 和 AbstractProductB,而按钮、文本这些组件就是具体的产品类。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值