享元模式入门解读

六眼飞鱼酱① 提交于 2019-11-26 14:20:32

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

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

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

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

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

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!