结构型模式之享元FLYWEIGHT

来源:互联网 发布:品牌网络宣传 编辑:程序博客网 时间:2024/04/27 17:30

一、意图

运用共享技术有效地支持大量细粒度的对象

二、图解

这里写图片描述
对于一个文档编辑器,如果我们对每个文字都建立个对象将会消耗大量的内存。由于英文字母只有26个,如果我们只建立26个对象,而文档编辑器内的文字都都是共享的这些对象。如下图:
这里写图片描述
但是Flyweight对象应该只存自己的内部状态,如:字母只存储字符代码,而不存储它的大小,字体等外部状态。外部信息由用户提供,Flyweight自己根据信息绘画自己。
这里写图片描述

三、结构

这里写图片描述
这里写图片描述

四、其他

  1. 共享Flyweight越多,存储节约越多,如果外部状态是通过计算出来而非存储,将会更一步节约存储,但会增加计算时间。
  2. Flyweight对象是共享的,用户最好不要直接对它进行实例化,可以使用工厂模式实例化。
  3. 共享还意味着某种形式的引用计数和垃圾回收,当一个 Flyweight不再使用时,可以
    回收它的存储空间。
0 0
原创粉丝点击