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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例子总结:

简单工厂:比亚迪的秦

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

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

相关推荐
一只小小Java4 小时前
Naocs本地部署&安装3.2.3+Spring boot 3.2.0
java·spring boot·后端·nacos
JL154 小时前
Spring Boot vs Gin:Java 人搭第一个 Go REST API
java·spring boot·gin
神明不懂浪漫5 小时前
【第七章】Java中的常用类
java·开发语言·前端·经验分享·笔记
Jelena1577958579214 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
神明不懂浪漫15 小时前
【第五章】Java中的继承与多态
java·开发语言
葬送的代码人生17 小时前
别再让 AI 瞎写代码了!Vibe Coding 三步法教你写出靠谱代码
前端·设计模式·架构
AI多Agent协作实战派17 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit17 小时前
Java+Ai+vue
java·spring·maven
qq_25183645717 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive17 小时前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc