## 享元设计模式
###
属于结构性模式,主要用于减少创建对象的数量,以减少内存占用和提高性能,它提供了减少对象数量从而改善应用所需要的对象结构的方式。
###
享元设计模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
###
## 应用场景
###
1、JAVA 中的 String,如果字符串常量池⾥有则返回,如果没有则创建⼀个字符串保存在字符串常量池⾥⾯
2、数据库连接池、线程池等
3、如果系统有⼤量相似对象,或者需要⽤缓冲池的时候可以使⽤享元设计模式,也就是⼤家说的池化技术如果发现某个对象的⽣成了⼤量细粒度的实例,并且这些实例除了⼏个参数外基本是相同的,如果把那些共享参数移到类外⾯,在⽅法调⽤时将他们传递进来,就可以通过共享对象,减少实例的个数
###
## 角色
###
**抽象享元⻆⾊**:为具体享元⻆⾊规定了必须实现的⽅法,⽽外部状态就是以参数的形式通过此⽅法传⼊
**具体享元⻆⾊**:实现抽象⻆⾊规定的⽅法。如果存在内部状态,就负责为内部状态提供存储空间。
**享元⼯⼚⻆⾊**:负责创建和管理享元⻆⾊。要想达到共享的⽬的,这个⻆⾊的实现是关键
**客户端⻆⾊**:维护对所有享元对象的引⽤,⽽且还需要存储对应的外部状态
###
![](https://img.kancloud.cn/10/d7/10d7ab953006d01373279451e485956c_912x499.png)
###
## 具体实现(云效代码study-java项目当中设计模式当中有代码案例)
###
![](https://img.kancloud.cn/33/14/3314994bcdfea07456c9a3fb39b71c6f_1889x921.png)
###
![](https://img.kancloud.cn/a7/09/a7099d6d60ff9f8d04e29ac6d8b037ab_1370x907.png)
###
![](https://img.kancloud.cn/35/49/35494c9450be23c9767b48cd20097aee_1323x940.png)
###
![](https://img.kancloud.cn/99/15/9915efe13a384d590436402905bf3377_1368x932.png)
###
![](https://img.kancloud.cn/fc/54/fc54385abafbfe331dc0343a2814aaca_1420x923.png)
- 设计模式六大原则
- 常见的三大设计模式分类
- 创建型模式之单例模式
- 单例模式之懒汉
- 单例模式之饿汉
- 单例模式之如何选择懒汉饿汉
- 什么情况下使用单例模式
- 创建型模式之工厂模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 创建型模式之原型模式
- 创建型模式之建造者模式
- 结构型模式之适配器模式
- 接口的适配器模式
- 类的适配器模式
- 结构型模式之桥接模式
- 结构型模式之桥接模式和适配器模式的区别
- 结构型模式之装饰器模式
- 结构型模式之代理模式
- 结构模式之外观模式
- 结构模式之享元模式
- 行为模式之策略模式
- 行为模式之模板模式
- 行为模式之观察者模式
- 行为模式之责任链模式
- 行为模式之命令模式
- 行为模式之迭代器模式
- 行为模式之备忘录模式
- 行为模式之状态模式