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

Flyweight

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

目的

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

P.s

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

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

模式定义

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

要点总结

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

E.g

相关推荐
乄夜31 分钟前
嵌入式面试高频(5)!!!C++语言(嵌入式八股文,嵌入式面经)
c语言·c++·单片机·嵌入式硬件·物联网·面试·职场和发展
YYDS3141 小时前
C++动态规划-01背包
开发语言·c++·动态规划
wydaicls1 小时前
十一.C++ 类 -- 面向对象思想
开发语言·c++
姜君竹2 小时前
QT的工程文件.pro文件
开发语言·c++·qt·系统架构
思捻如枫2 小时前
C++数据结构和算法代码模板总结——算法部分
数据结构·c++
weixin_478689763 小时前
C++ 对 C 的兼容性
java·c语言·c++
k要开心3 小时前
C++概念以及基础框架语法
开发语言·c++
weixin_307779133 小时前
Linux下GCC和C++实现统计Clickhouse数据仓库指定表中各字段的空值、空字符串或零值比例
linux·运维·c++·数据仓库·clickhouse
胡侃有料3 小时前
【设计模式】1.简单工厂、工厂、抽象工厂模式
设计模式·抽象工厂模式
秦少游在淮海4 小时前
C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数
开发语言·c++·stl·string·范围for·auto·string 的使用