Flyweight设计模式是否可用于降低实例化成本?

问题描述 投票:1回答:1

Design patterns本书为Flyweight设计模式提供了以下适用性(加粗强调):

适用性

Flyweight模式的有效性在很大程度上取决于方式和位置 它被使用了。当以下all是 正确:

  • 应用程序使用大量对象。
  • 由于对象数量巨大,存储成本很高。
  • 大多数对象状态可以是外部的。
  • 一旦删除了外部状态,则可以用相对较少的共享对象替换许多对象组。
  • 该应用程序不依赖于对象标识。由于飞行重量对象可以共享,因此身份测试将针对 概念上不同的对象。

代替存储成本(空间资源),实例化成本(时间资源)也可以申请有效吗?

design-patterns time-complexity instantiation flyweight-pattern
1个回答
1
投票

Flyweight设计模式只是缓存的一种特殊应用。在无法缓存整个对象的情况下,由于某些对象的状态是唯一的,Flyweight提醒我们,如果我们分离出一个不唯一且可以共享的部分,我们仍然可以缓存对象的part

由于Flyweight只是部分缓存,因此它通常提供与缓存相同的好处,包括减少时间和空间复杂度。因此,您的问题的答案是肯定的,实例化费用(时间资源)使有效使用Flyweight模式。当然,这是假设您不能仅缓存整个对象,这比缓存部分对象要简单得多。

© www.soinside.com 2019 - 2024. All rights reserved.