结构型模式之享元FLYWEIGHT

本文介绍了享元模式的应用场景,展示了如何利用共享技术有效支持大量细粒度对象,从而节省内存资源。通过文档编辑器的例子说明了享元模式的实现原理,并强调了外部状态的正确处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、意图

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

二、图解

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

三、结构

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

四、其他

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值