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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

例子总结:

简单工厂:比亚迪的秦

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

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

相关推荐
美式小田2 分钟前
单片机学习笔记 10. 中断系统(理论)
笔记·单片机·嵌入式硬件·学习
Java小王子呀7 分钟前
java使用itext生成pdf
java·pdf
JWASX9 分钟前
定时/延时任务-Timer用法
java·定时器·timer
大风吹PP凉26 分钟前
45系统调用与内核API
java·linux·服务器
as_jopo34 分钟前
-Dspring.profiles.active=dev与--spring.profiles.active=dev的区别
java·后端·spring
hummhumm35 分钟前
第 32 章 - Go语言 部署与运维
java·运维·开发语言·后端·python·sql·golang
QQ_11543203136 分钟前
基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现四
java·spring boot·mysql·毕业设计·毕业源码·竞拍系统·竞拍平台
fa_lsyk41 分钟前
Spring:AOP面向切面案例讲解AOP核心概念
java·后端·spring
陈奕迅本讯42 分钟前
人力资源项目学习
java·学习
2401_8784673244 分钟前
大连环保公益管理系统|Java|SSM|Vue| 前后端分离
java·开发语言·学习·tomcat·maven