当前位置: 首页 > wzjs >正文

红孩子母婴网站开发背景高质量关键词搜索排名

红孩子母婴网站开发背景,高质量关键词搜索排名,廊坊做网站公司哪家好,网站由哪几个部分组成🔄 回顾 Day 14:组合模式小结 在 Day 14 中,我们学习了组合模式(Composite Pattern): 适用于构建树状层级结构,使得“单个对象”和“对象集合”统一操作。广泛用于文件系统、UI 控件树、组织结…

🔄 回顾 Day 14:组合模式小结

在 Day 14 中,我们学习了组合模式(Composite Pattern):

  • 适用于构建树状层级结构,使得“单个对象”和“对象集合”统一操作。
  • 广泛用于文件系统、UI 控件树、组织结构等。

而今天的主角“享元模式”,是极致优化资源的代表。

享元模式(Flyweight Pattern)用于共享对象,减少内存占用,提升系统性能。


一、享元模式的核心动机

在系统中,如果存在大量“内容相同或相似”的对象,重复创建将造成资源浪费。

✅ 比如:

  • 文本编辑器中成千上万个字符对象
  • 游戏中上千棵树、子弹、砖块、粒子
  • 地图系统中多个城市的图标

如果这些对象的“大部分状态相同”,我们就可以将它们共享起来,避免重复创建
在这里插入图片描述


二、结构图(UML)

+----------------+      +--------------------+
|  Flyweight     |<-----|  ConcreteFlyweight |
+----------------+      +--------------------+
| +operation()   |      | - intrinsicState   |
+----------------+      | +operation()       |+--------------------++----------------+         +-----------------------+
| FlyweightFactory |------>| Flyweight Pool        |
+----------------+         +-----------------------+
| +getFlyweight() |

三、术语说明:

概念含义描述
Intrinsic State内部状态(可共享、不变)
Extrinsic State外部状态(不共享,由客户端提供)
Flyweight享元接口,定义共享对象应有操作
ConcreteFlyweight实现享元的具体对象
FlyweightFactory管理共享对象池(享元工厂)

四、C++ 实现:字符渲染引擎

我们模拟一个文本渲染系统,文字中的每个字符都是一个对象,但字符本身可共享,坐标位置不可共享。

✅ Flyweight 接口

class Glyph {
public:virtual void render(int x, int y) = 0; // Extrinsicvirtual ~Glyph() = default;
};

✅ 共享对象:ConcreteFlyweight

class CharacterGlyph : public Glyph {char symbol_; // Intrinsic State
public:CharacterGlyph(char ch) : symbol_(ch) {}void render(int x, int y) override {std::cout << "绘制字符 '" << symbol_ << "' at (" << x << "," << y << ")\n";}
};

✅ 享元工厂

class GlyphFactory {std::unordered_map<char, std::shared_ptr<Glyph>> pool_;public:std::shared_ptr<Glyph> getGlyph(char ch) {if (!pool_.count(ch)) {pool_[ch] = std::make_shared<CharacterGlyph>(ch);}return pool_[ch];}
};

✅ 使用示例

int main() {GlyphFactory factory;std::string text = "AABAC";int x = 0;for (char ch : text) {auto glyph = factory.getGlyph(ch); // 共享对象glyph->render(x, 0);               // 外部状态:坐标x += 10;}return 0;
}

输出:

绘制字符 'A' at (0,0)
绘制字符 'A' at (10,0)
绘制字符 'B' at (20,0)
绘制字符 'A' at (30,0)
绘制字符 'C' at (40,0)

五、实战应用场景

场景享元内容说明
文本编辑器字符对象:字体、颜色共享,位置不共享
游戏地图渲染大量树木、草丛、砖块共享对象,坐标单独记录
数据可视化系统图标、图例、样式重复,减少渲染对象数量
图标资源池图标素材在多个地方复用,统一缓存
数据库连接池多个线程共用固定连接对象,提升资源复用率

六、优缺点分析

✅ 优点:

  • 极大节省内存资源(大量对象时提升明显)
  • 避免重复对象创建,提升性能
  • 中央控制共享对象更可控

❗ 缺点:

  • 管理复杂,需划分共享状态/外部状态
  • 外部状态维护变复杂,需由使用者负责传入

七、与单例/对象池/享元的区别

模式共享粒度对象数量控制核心目的
单例全局单一只能有 1 个全局唯一对象
对象池共享对象集合固定数量(动态管理)控制创建/复用的生命周期
享元每类一个共享对象可复用对象很多减少对象创建,提高复用率

八、面试表达模板

“我们在文本渲染模块中使用了享元模式来复用字符对象,字符本身作为内部状态共享,坐标作为外部状态传入。通过 GlyphFactory 管理共享对象池,节省了内存占用并提升渲染性能,特别适合大量字符的 UI 场景。”

✅ 建议强调共享 vs 非共享状态划分、工厂管理、资源优化作用。


九、口诀记忆

“不变共用做享元,状态分离省内存;池中拿来直接用,场景重复效率增。”


十、明日预告:Day 16

责任链模式(Chain of Responsibility Pattern):请求沿链传递,节点动态决定处理权,构建灵活的处理流程结构。

http://www.dtcms.com/wzjs/426137.html

相关文章:

  • 毕节做网站优化网络营销管理系统
  • 汕头企业网页设计重庆网站优化公司
  • 建网站需要多久百度指数查询移民
  • 广西网站建设价钱软文代发平台
  • 中企动力做网站的优势网络推广需要花多少钱
  • 专业做淘宝网站超级搜索引擎
  • 帮别人做网站开价市场营销推广
  • 个人网站可以做淘宝推广关键词挖掘爱站网
  • 美的地产集团官方网站建设seo网站推广助理
  • php可以做视频网站有哪些网络营销课程总结与心得体会
  • 郑州手机网站制作google 推广优化
  • 网站开发代码编辑器宁波搜索引擎优化seo
  • 网站建设视频教程 百度云哪个行业最需要推广
  • 网站网址模板seo优化文章网站
  • 建筑网站免费常德论坛网站
  • 建立企业门户网站建设网上售卖平台有哪些
  • 关于网站集约化建设公函互联网营销的五个手段
  • 天元建设集团有限公司社会信用代码电商关键词排名优化怎么做?
  • 怎么做网站海报新媒体运营培训学校
  • 哈尔滨营销网站建设站内seo内容优化包括
  • 电商网站 appseo排名赚挂机
  • 圣都装饰全国排名百度seo优化排名软件
  • 做文化建设的网站巨量算数数据分析入口
  • 无极网站百度大全下载
  • 做外贸需要到外汇管理网站郑州靠谱seo电话
  • 企业网站建设排名客服网络销售平台上市公司有哪些
  • 烟台高端网站建设公司足球排名世界排名
  • 珠海市官网网站建设价格专业搜索引擎优化电话
  • 网站建设建材江苏网络推广公司
  • 58网站建设多少钱关键词出价计算公式