Flyweight享元/共享模式(对象性能)

Flyweight

链接:享元模式实例代码 + 解析

目的

  • 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价------主要指内存需求方面的代价。
  • 如何在避免大量细粒度对象问题的同时,让外部客户程序仍然能够透明地使用面向对象的方式来进行操作?

P.s

享元/共享模式,的基本逻辑是将有相似或相同的细节且又存在细微差别的大量实例对象的统一管理,一般结构是共享对象 + KV的容器。

例子:可以类比为一个班级,其中不同的学生都是有独立的ID去对应,而班级的老师可以通过一些管理方式,去对学生(容器内的对象)进行批量、条件式、针对的管理。

模式定义

运行共享技术有效地支持大量细粒度的对象。 ------《设计模式》GoF

要点总结

  • 面向对象很好地解决了抽象性的问题,但是作为yield运行机器中的程序实体,我们需要考虑对象的代价问题, Flyweight主要解决面向对象的大家问题,一般不触及面向对象的抽象性问题。
  • Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的压力。在具体实现方面,要注意对象状态的处理。
  • 对象的数量太大从而导致对象内存开销加大------什么样的数量才算大?这需要我们仔细的根据具体应用情况进行评估,而不能凭空臆断。

E.g

相关推荐
别动我齐刘海36 分钟前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
傻啦嘿哟1 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
码匠许师傅2 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试
闻道且行之2 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
莫浅子3 小时前
day01-USB架构与枚举
c++·单片机·嵌入式驱动
不会代码的小猴4 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
沫璃染墨4 小时前
《Qt从零入门系列(六):信号与槽进阶——从多种连接方式到Lambda表达式》
开发语言·c++·qt·代码规范·设计规范·qt5
小小龙学IT5 小时前
ZeroMQ(libzmq)开源消息库深度解析:brokerless 时代的轻量消息内核
c++·开源
Benny_Tang6 小时前
题解:P10230 [COCI 2023/2024 #4] Lepeze
c++·算法
我变成萤火虫6 小时前
反悔贪心(经典题目讲解)
c++·算法·贪心算法·stl·排序算法·反悔贪心