【个人笔记】一个例子理解工厂模式

工厂模式优点:创建时类名过长或者参数过多或者创建很麻烦等情况时用,可以减少重复代码,简化对象的创建过程,避免暴露创建逻辑,也适用于需要统一管理所有创建对象的情况,比如线程池的工厂类Executors

简单工厂 :用一个工厂类封装对象的创建过程,要获取对象直接从工厂类获取

(专卖比亚迪秦的生产工厂,只卖秦)

优点:就是一开始说的那些

缺点:不符合开闭原则(对扩展是开放的,对修改是关闭的),要换产品就得改工厂类的代码

(如果秦不好卖,客户(要使用对象的方法)让你改卖宋,你就得把生产线(源码)换成宋的生产线,很麻烦)

工厂方法 :定义一个工厂接口,具体要生产啥对象由实现类决定。(专卖比亚迪的工厂,目前只生产秦,你要宋我就再开一个专卖宋的厂)

优点:不需要对原工厂进行修改

(不用换秦的生产线,直接开一家新工厂生产宋)

缺点:一个工厂对应一个产品,每增加一个产品就要新增一个具体的工厂类,增加系统复杂度

(那我多一个子品牌就得多开一家工厂,那多麻烦)

抽象工厂 :定义一个工厂接口,把类似的对象归纳到同一个工厂实现类(比亚迪工厂)中,一个实现类可以有多个生产不同对象(秦、宋、汉)的方法。

(啥车都卖,目前只卖比亚迪(实现类),厂里还能生产秦、宋、汉(类里的方法),你要问界M7我就再开一个问界的厂(实现类),先卖M7(类里的方法),有人要M5的话也可以产)

优点:不同工厂之间有比较多相同点时可以使用抽象工厂模式,可以提高组件的复用性;解决跨平台带来的兼容问题

缺点:增加新的产品等级结构麻烦,需要对原有结构进行较大的修改,甚至需要修改抽象层代码

例子总结:

简单工厂:比亚迪的秦

工厂方法:比亚迪的秦、比亚迪的宋、比亚迪的汉

抽象工厂:比亚迪(秦、宋、汉)

相关推荐
赵广陆6 小时前
企业实战:Markdown图片检索
android·java·开发语言
C++、Java和Python的菜鸟6 小时前
第3章 从0开始用若依
java·开发语言
蒸蒸yyyyzwd6 小时前
cpp选手秋招准备 学习笔记day7 webserver
笔记·学习
Json____6 小时前
五金制品行业-企业官网源码
java·大数据·数据库·企业站·wwwoop.com
counting money8 小时前
Spring AI Alibaba 从入门到实战:构建企业级 AI 应用
java·人工智能·spring
原野池予8 小时前
深入Java集合框架:数组与List互转底层原理剖析(JDK 8)
java·数据结构·list
Java成神之路-8 小时前
深入理解 HashMap 扩容时机:JDK 7 vs JDK 8 的设计差异与取舍
java·juc
李冰然8 小时前
深入Java集合框架:数组与List互转底层原理剖析(JDK 8)
java
Chen—LSN8 小时前
C语言——数据在内存中的存储
c语言·开发语言·经验分享·笔记
竹枝溪8 小时前
MySQL进阶:约束、多表设计、多表查询与事务
java·数据库·mysql·事务·子查询·acid·多表查询