Flyweight(享元)模式

  1. 特点:Flyweight释义有轻量级、享元等。享元这个词对我而言很难理解,却又不明觉厉。
    享元模式一句话总结就是通过尽量共享实例来避免new出实例。这句话的精髓就是共享,共享什么呢?共享已存在的实例,实现资源重复利用。比如Java语言,在用new创建一个实例时是相对较重的程序操作,可是前面讲过原型模式可以解决这个问题,为什么不用呢?因为原型模式只能解决部分时间问题,而且不能解决空间问题,享元模式既能节省时间又能减少内存浪费。
    简单说就是实例作为资源个体单元被共享,这个时候再回头看享元这个词,似乎就很好理解了,就是共享,就是被共享的资源个体单元。
  2. 角色
角色名称 角色职责
Flyweight(轻量级) 定义被共享的类,类中的数据信息可分为两种:Intrinsic(本质的、固有的)信息:不依赖于位置与状况,可以共享;Extrinsic(外在的、非本质的)信息:依赖于位置与状况,不能共享。
FlyweightFactory(轻量级工厂) 生产Flyweight角色的工厂,同时管理着被生产的Flyweight对象池
Client(请求者) 通过FlyweightFactory获取Flyweight组装数据
  1. 角色关系

    Flyweight.png

  2. 代码示例:Flyweight

以上文献参考:《图解设计模式》

你可能感兴趣的:(Flyweight(享元)模式)