应用场景:大量对象持有的固定的公共部分
比如说地森林渲染 假设我们 每棵树都有 树网格,树干纹理,树叶纹理,位置,光照,树皮颜色,树叶颜色......
当大批量产生时不可能说为每棵树都定制纹理,网格这些 所以把比如固有的 (树网格和树枝纹理,树叶)提取出来
从
class Tree { private: Mesh mesh_; Texture bark_; Texture leaves_; Vector position_; double height_; double thickness_; Color barkTint_; Color leafTint_; };
更替为
class TreeModel { private: Mesh mesh_; Texture bark_; Texture leaves_; }; class Tree { private: TreeModel* model_; Vector position_; double height_; double thickness_; Color barkTint_; Color leafTint_; };
这样每棵树都指向了固定的实例 不再是自己持有一个完全的实例
关于如何提取固有的部分,游戏编程模式中把这种区域统称为"与上下文无关" 这很重要哈哈
作为享元模式的入门理解,若有错误请各位观众老爷指出错误