Java学习笔记48-【工厂模式(简单工厂模式、工厂方法模式);单例模式(饿汉模式、懒汉模式)、抽象工厂模式】

一、工厂模式

1. 作用

实现了创建者与使用者的分离

2. 本质

实例化对象不使用new,用工厂方法代替

3. 分类

(1)简单工厂模式

在这里插入图片描述

【1】Car接口
在这里插入图片描述
【2】大众车类
在这里插入图片描述
【3】小米车类
在这里插入图片描述
【4】工厂类
在这里插入图片描述
【5】顾客类
在这里插入图片描述

(2)工厂方法模式

在这里插入图片描述

【1】Car接口(同上)
【2】大众车类(同上)
【3】小米车类(同上)
【4】工厂接口
在这里插入图片描述
【5】大众工厂类
在这里插入图片描述
【6】小米工厂类
在这里插入图片描述
【7】顾客类
在这里插入图片描述

工厂方法模式:要是有新的车添加,只需要增加该车的类以及该车的工厂类即可

二、单例模式

1. 作用

为什么会有人想要控制一个类所拥有的实例数量?
最常见的原因是唯一的控制某些共享资源 (例如数据库或文件) 的访问权限。

2. 本质

能够保证一个类只有一个实例, 并提供一个访问该实例的方法

3. 实现方法

(1)将默认构造器私有, 防止其他对象使用单例类的 new运算符。
(2)新建一个公共的静态方法,该方法要么返回现存的对象实例,要么 “偷偷” 调用私有构造器来创建对象, 并将其保存在一个静态成员变量中,然后返回该对象。此后所有对于该函数的调用都将返回这一缓存对象。

4. 分类

(1)饿汉模式

在这里插入图片描述

(2)懒汉模式

在这里插入图片描述

5. 懒汉模式存在的问题

多线程,使用synchronized,解决多个线程同时争抢相同的公共资源
new出对象时,会出现指令重排,使用volatile

三、抽象工厂模式

1. 特点

抽象工厂作为一个一个接口, 可用于创建每个系列各个不同产品。 只要代码通过该接口创建对象, 那么就不会生成与应用程序已生成的产品类型不一致的产品。

2. 优点

(1)可以确保同一工厂生成的产品相互匹配。
(2)可以避免客户端和具体产品代码的耦合。
(3)单一职责原则。可以将产品生成代码抽取到同一位置,使得代码易于维护。
(4)开闭原则。 向应用程序中引入新产品变体时,无需修改客户端代码。

3. 示例

在这里插入图片描述
在这里插入图片描述【1】电视接口
在这里插入图片描述
【2】洗衣机接口
在这里插入图片描述
【3】小米电视
在这里插入图片描述
【4】小米洗衣机
在这里插入图片描述
【5】华为电视机
在这里插入图片描述

【6】华为洗衣机
在这里插入图片描述

【7】抽象工厂
在这里插入图片描述
【8】小米工厂
在这里插入图片描述
【9】华为工厂
在这里插入图片描述
【10】客户端
在这里插入图片描述

参考:B站狂神说、《深入设计模式》https://refactoringguru.cn/design-patterns/factory-method

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃凉拌辣芒果

不断学习,不断进步,共勉~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值