0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

设计模式结构性:享元模式

冬至子 来源:码农架构 作者:小智 2023-06-08 17:32 次阅读

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象

结构图

图片

角色与理解

  • 享元模式共分为四种角色:
  • Flyweight (抽象享元类):通常是一个接口或者是抽象类,在抽象享元类中声明了共享享元类的公共方法,通过这些方法可以访问享元类的内部数据(内部状态),也可以设置享元类的外部数据(外部状态)
  • Concrete Flyweight (共享具体享元类):实现抽象享元类,其实例称为享元对象,一般为单例模式,提供唯一的享元对象
  • UnsharedConcrete Flyweight (非共享具体享元类):实现抽象享元类,但是不共享,通过构造函数进行实例化
  • Flyweight Factory (享元工厂类):创建并管理享元对象,以内部的键值对结构存储享元对象
  • 共享具体享元类与非共享具体享元类实现抽象享元类,能够保证他们对外具有一致的行为接口,为客户端的使用提供了便利,客户端通过享元工厂类获取共享享元对象。
  • 享元工厂类返回的享元对象都是只有内部状态的享元对象,通过客户端操作添加外部状态

核心代码

  • 抽象享元类

图片

  • 具体享元类

图片

  • 享元工厂类

图片

  • 外部状态类

图片

  • 客户端

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7365

    浏览量

    163088
收藏 人收藏

    评论

    相关推荐

    庄园农场游戏平台app定制

    ,尊庄园农场游戏平台模式定制   1、尊庄园   10苹果每天产1个尊币15天收获15个尊
    发表于 10-08 15:05

    理解模式

    设计模式-模式
    发表于 04-20 07:14

    优化电动汽车的结构性

    优化电动汽车的结构性能以提高效率和安全迅速增长的全球电动汽车(EV)市场预计到2027年将达到8028亿美元。在电池和高压电子设备的驱动下,电动汽车的运行和维护成本往往低于传统汽车,几乎不会产生
    发表于 09-17 08:10

    STM32的结构和启动模式

    STM32的结构和启动模式需要的来下载哦。
    发表于 03-31 17:36 46次下载

    基于信息模式匹配方法

    有效的描述形式、处理耗时等缺点,极大地阻碍了结构信息的使用.为了充分利用结构信息,提出一种基于信息模式匹配方法(IU_Based),该方法首先将
    发表于 01-23 15:29 0次下载

    庄园游戏模式开发

      尊庄园软件系统开发【185.7630.7194微电龙梓】,尊庄园游戏模式开发,尊庄园系统开发定制,尊庄园软件开发定制,尊
    发表于 10-09 14:05 154次阅读

    设计模式结构性:适配器模式

    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
    的头像 发表于 06-07 11:56 680次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>结构性</b>:适配器<b class='flag-5'>模式</b>

    设计模式结构性:组合模式

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。
    的头像 发表于 06-08 10:34 1158次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>结构性</b>:组合<b class='flag-5'>模式</b>

    设计模式结构性:桥接模式

    桥接模式不是将两个不相干的类链接,而是将一个需要多维度变化的类拆分成抽象部分和实现部分,并且在抽象层对两者做组合关联,是用组合的方式来解决继承的问题。
    的头像 发表于 06-08 10:49 671次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>结构性</b>:桥接<b class='flag-5'>模式</b>

    设计模式结构性:门面模式

    门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。
    的头像 发表于 06-08 14:28 600次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>结构性</b>:门面<b class='flag-5'>模式</b>

    设计模式结构性:代理模式

    在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式
    的头像 发表于 06-09 15:27 747次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>结构性</b>:代理<b class='flag-5'>模式</b>

    如何通过设计模式来节省内存

    相信大家日常开发过程中,一个优秀的程序猿写出的代码一定要节省空间的,比如节省内存,节省磁盘等等。那么如何通过设计模式来节省内存呢? 1、什么是模式? Use sharing to
    的头像 发表于 10-09 10:31 436次阅读
    如何通过设计<b class='flag-5'>模式</b>来节省内存

    5G技术和电动汽车会推动结构性增长吗?.zip

    5G技术和电动汽车会推动结构性增长吗?
    发表于 01-13 09:06 1次下载

    存储器结构性分道篇.zip

    存储器结构性分道篇
    发表于 01-13 09:07 1次下载

    汽车行业:短期关注芯片短缺改善,长期布局结构性机会.zip

    汽车行业:短期关注芯片短缺改善,长期布局结构性机会
    发表于 01-13 09:07 2次下载