知识卡片
享元拆分状态
内容
享元通过共享细粒度对象节省内存,关键是把可共享的内部状态和随场景变化的外部状态分开。发散:共享不是缓存一切,而是先证明对象身份不依赖外部状态。
参考来源
- 位置:第4章《结构型模式》4.6节「Flyweight(享元)」2.动机(源文件:_epub-src/OEBPS/Text/part0075.xhtml)
- 结论依据:原文明确区分内部状态(独立于场景、可共享)和外部状态(取决于场景、不可共享),并说明用户负责在必要时将外部状态传递给flyweight,直接支持卡片对享元把可共享的内部状态和随场景变化的外部状态分开的论述。
- 原始内容:"这里的关键概念是内部状态和外部状态之间的区别。内部状态存储于flyweight中,它包含了独立于flyweight场景的信息,这些信息使得flyweight可以被共享。而外部状态取决于flyweight场景,并根据场景而变化,因此不可共享。"