享元模式通过共享减少对象数量,C++中利用工厂和容器管理内部状态相同的对象,结合不可变设计与智能指针优化内存使用,适用于高频创建相似对象的场景。

享元模式(Flyweight Pattern)是一种结构型设计模式,它的核心思想是通过共享技术来支持大量细粒度对象的复用,从而减少内存中对象的数量,降低系统开销。在C++中,尤其适用于创建大量相似对象的场景,比如文本编辑器中的字符格式、游戏开发中的子弹或敌人类型等。
享元模式的核心概念
享元模式将对象的状态分为两类:
-
内部状态(Intrinsic State):可以被共享,不会随环境改变,通常作为享元对象的成员变量。
-
外部状态(Extrinsic State):依赖于上下文,不可共享,使用时由客户端传入。
通过分离这两类状态,多个上下文可以共享同一个享元对象,只需传入不同的外部状态即可表现出不同行为。
实现一个简单的享元工厂
在C++中,通常借助一个工厂类来管理享元对象的创建和共享。工厂维护一个已创建享元的容器(如map),避免重复创建相同内部状态的对象。
立即学习“C++免费学习笔记(深入)”;
#include
#include