享元模式
享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。提供了减少对象数量从而改善应用所需的对象结构的的方式
适用场景
尝尝应用于系统的底层开发,以便解决系统的性能问题。例如数据库的连接池。
系统有大量的相似对象,需要缓冲池的场景。
优点
减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率
减少内存之外的其他资源
缺点
关注内/外部状态、关注线程安全问题
使系统、程序逻辑复杂化
扩展
内部状态,不随着环境的改变而改变,位于享元对象的内部。
外部状态,因为环境的改变而改变,一般位于享元模式的外部。
通常可以理解,内部状态就是享元对象的属性。
Golang Demo
Java Demo
这里面,title 一直不会发生变化,就是内部状态,而department需要通过setter方法来使用。就可以理解为title是内部状态,而department使外部状态。
UML

补充另一个版本的Java/Scala Demo 以及源码解析
Java Demo_
Scala Demo
UML_
源码解析
Last updated
Was this helpful?