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

Flyweight

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

目的

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

P.s

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

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

模式定义

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

要点总结

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

E.g

相关推荐
饕餮争锋4 小时前
设计模式笔记_行为型_访问者模式
笔记·设计模式·访问者模式
mit6.8249 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
啊阿狸不会拉杆11 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
小学生的信奥之路11 小时前
洛谷P3817题解:贪心算法解决糖果分配问题
c++·算法·贪心算法
曙曙学编程12 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
△曉風殘月〆13 小时前
Visual Studio中的常用调试功能(下)
c++·ide·visual studio·调试
武当豆豆13 小时前
C++编程学习(第25天)
开发语言·c++·学习
写bug写bug14 小时前
你真的会用枚举吗
java·后端·设计模式
哆啦code梦14 小时前
趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
设计模式·策略模式
minji...16 小时前
C++ string类(STL简介 , string类 , 访问修改字符)
开发语言·c++