享元模式学习笔记
面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和 对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这 一类问题而诞生的。 享元模式(Flyweight Pattern)又称为轻量级模式,是对象池的一种实现。类似于线程池,线程池 可以避免不停的创建和销毁多个对象,消耗性能。提供了减少对象数量从而改善应用所需的对象结构的 方式。其宗旨是共享细粒度对象,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独 的对象,以此来降低内存的消耗,属于结构型模式。 原文:Use sharing to support large numbers of fine-grained objects efficiently. 解释:使用共享对象可有效地支持大量的细粒度的对象。 享元模式把一个对象的状态分成内部状态和外部状态,内部状态即是不变的,外部状态是变化的;然后通过共享不变的部分,达到减少对象数量并节约内存的目的。 享元模式模式的本质是缓存共享对象,降低内存消耗。 首先我们来看享元模式的通用UML类图: 从类图上看,享元模式有三个参与角色: 抽象享元角色(Flyweight):享元对象抽象基类或者接口,同时定义出对象的外部状态和内部状态 的接口或实现; 具体享元角色(ConcreteFlyweight)