享元模式(Flyweight Pattern)
定义:Use sharing to support large numbers of fine-grained objects
efficiently.(使用共享对象可有效地支持大量的细粒度的对象。)
对象的信息分为两个部分:内部状态(intrinsic)与外部状态(extrinsic)。享元模式中区分了内蕴状态和外蕴状态。内蕴状态就是共性,外蕴状态就是个性了。
享元模式分为:单纯享元模式和复合享元模式。
单纯享元模式的结构。
- 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式
通过此方法传入。在 Java 中可以由抽象类、接口来担当。 - 具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供
存储空间。 - 享元工厂角色:负责创建和管理享元角色。要想达到共享的目的,这个角色的实现是关
键! - 客户端角色:维护对所有享元对象的引用,而且还需要存储对应的外蕴状态。
复合享元模式的结构。
- 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式
通过此方法传入。在 Java 中可以由抽象类、接口来担当。 - 具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供
存储空间。
享元模式是一种用于高效支持大量细粒度对象的结构型设计模式,核心是区分内蕴状态和外蕴状态。本文介绍了单纯享元和复合享元模式的结构,强调了正确划分内外状态的重要性,以及如何在适合的场景下应用享元模式以节省内存。此外,还提到了享元模式的时间与空间权衡,以及其在创建型模式中的位置。
订阅专栏 解锁全文
174

被折叠的 条评论
为什么被折叠?



