【发布时间】:2020-09-18 06:06:50
【问题描述】:
我了解享元设计模式的好处,但我不确定它的确切缺点。 例如,我知道它可能是破坏封装,但这是我目前所能想到的,享元设计模式有哪些可能的缺点,关于这件事的文档很少。
【问题讨论】:
标签: design-patterns flyweight-pattern
我了解享元设计模式的好处,但我不确定它的确切缺点。 例如,我知道它可能是破坏封装,但这是我目前所能想到的,享元设计模式有哪些可能的缺点,关于这件事的文档很少。
【问题讨论】:
标签: design-patterns flyweight-pattern
在第 199 页,GoF 提到,
享元可能会引入与传输、查找和/或计算外在状态相关的运行时成本,尤其是在它以前存储为内在状态的情况下。
如果计算或查询外部状态而不是存储外部状态,则享元可以是空间与时间的权衡。当然,模式本身也增加了一些固有的复杂性:以前由每个对象拥有并直接访问的数据现在必须通过某种类型的工厂检索,这增加了额外的间接层。
享元模式的狭窄适用性也可以被认为是一个缺点。根据 GoF,必须满足五个不同的条件才能利用该模式的优势。这就是我相信Java's String.intern() is not a Flyweight的原因。
【讨论】: