Design patterns本书为Flyweight设计模式提供了以下适用性(加粗强调):
适用性
Flyweight模式的有效性在很大程度上取决于方式和位置 它被使用了。当以下all是 正确:
- 应用程序使用大量对象。
- 由于对象数量巨大,存储成本很高。
- 大多数对象状态可以是外部的。
- 一旦删除了外部状态,则可以用相对较少的共享对象替换许多对象组。
- 该应用程序不依赖于对象标识。由于飞行重量对象可以共享,因此身份测试将针对 概念上不同的对象。
代替存储成本(空间资源),实例化成本(时间资源)也可以申请有效吗?
Flyweight设计模式只是缓存的一种特殊应用。在无法缓存整个对象的情况下,由于某些对象的状态是唯一的,Flyweight提醒我们,如果我们分离出一个不唯一且可以共享的部分,我们仍然可以缓存对象的part 。
由于Flyweight只是部分缓存,因此它通常提供与缓存相同的好处,包括减少时间和空间复杂度。因此,您的问题的答案是肯定的,实例化费用(时间资源)使有效使用Flyweight模式。当然,这是假设您不能仅缓存整个对象,这比缓存部分对象要简单得多。