享元模式(Flyweight Pattern)
定义:Use sharing to support large numbers of fine-grained objects
efficiently.(使用共享对象可有效地支持大量的细粒度的对象。)
对象的信息分为两个部分:内部状态(intrinsic)与外部状态(extrinsic)。享元模式中区分了内蕴状态和外蕴状态。内蕴状态就是共性,外蕴状态就是个性了。
享元模式分为:单纯享元模式和复合享元模式。
单纯享元模式的结构。
- 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式
通过此方法传入。在 Java 中可以由抽象类、接口来担当。 - 具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供
存储空间。 - 享元工厂角色:负责创建和管理享元角色。要想达到共享的目的,这个角色的实现是关
键! - 客户端角色:维护对所有享元对象的引用,而且还需要存储对应的外蕴状态。
复合享元模式的结构。