享元模式入门解读

应用场景:大量对象持有的固定的公共部分

比如说地森林渲染 假设我们 每棵树都有 树网格,树干纹理,树叶纹理,位置,光照,树皮颜色,树叶颜色......

当大批量产生时不可能说为每棵树都定制纹理,网格这些 所以把比如固有的 (树网格和树枝纹理,树叶)提取出来 

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_;
};

这样每棵树都指向了固定的实例 不再是自己持有一个完全的实例

关于如何提取固有的部分,游戏编程模式中把这种区域统称为"与上下文无关" 这很重要哈哈  

作为享元模式的入门理解,若有错误请各位观众老爷指出错误

原文地址:https://www.cnblogs.com/chenggg/p/11323749.html