类型:【结构型】
类图:
描述:
享元模式是池技术的重要实现方式。使用共享对象可有效地支持大量的细粒度的对象。
优点:
享元模式是一个非常简单的模式,它可以大大减少应用程序创建的对象,降低程序内存的占用,增强程序的性能。
缺点:
它提高了系统的复杂性,需要分离出外部状态和内部状态,而且外部状态具有固话特性,不应该随内部状态的改变而改变,否则会导致系统的逻辑混乱。
使用场景:
- 系统中存在大量的相似对象
- 细粒度的对象都具备较接近的外部状态。而且内部状态与环境无关,也就是说对象没有特定身份。
- 需要缓冲池的场景。
注意事项:
享元模式有太大的几率发生线程不安全,享元模式是让我们使用共享技术,而java的多线程又存在线程同步问题,因此只能依靠经验在需要的地方考虑一下线程安全,在大部分的场景下都不用考虑。我们在使用享元模式时,对象池中的享元对象尽量多,多到足够满足业务为止。