背景
大量创建对象的场景,会耗费大量的资源,使用享元模式能共享一些内部的状态。
定义
运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。
实现
- 定义一个享元的interface
- 定义一个享元的工厂
适用场景
- 系统有大量相似对象
- 需要缓冲池的场景
优缺点
优点
- 能够大大减少内存中对象的数量,内存中只保存一份相同或相似的对象,从而可以节约系统资源,提高系统性能。
- 享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享。
缺点
- 享元模式使得系统更加复杂,需要分离出内部状态和外部状态,这使得程序的逻辑复杂化。
- 为了使对象可以共享,享元模式需要将享元对象的状态外部化,而读取外部状态使得运行时间变长。