享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。使用该模式的关键是将享元的内蕴状态(可以共享)即外蕴状态(不可以共享)区分开来。
优点:大大减少对象的创建,降低系统的内存,使效率提高,且使用享元技术可以有效地支持大量细粒度的对象。
缺点:提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。
类图如下:
示例代码如下:
运行结果如下: