1

设计模式书为享元设计模式(粗体强调我的)提供了以下适用性:

适用性

Flyweight 模式的有效性在很大程度上取决于它的使用方式和位置。当满足以下所有条件时应用享元模式:

  • 应用程序使用大量对象。
  • 由于对象数量庞大,存储成本很高。
  • 大多数对象状态都可以是外部的。
  • 一旦外部状态被移除,许多对象组可能会被相对较少的共享对象所取代。
  • 应用程序不依赖于对象身份。由于享元对象可能是共享的,身份测试将为概念上不同的对象返回 true。

除了存储成本(空间资源)之外,实例化成本(时间资源)是否也有助于一个有效的应用程序?

4

1 回答 1

1

享元设计模式只是缓存的一种特殊应用。在无法缓存整个对象的场景下,因为对象的某些状态是唯一的,享元提醒我们,如果我们将不唯一的部分分开,可以共享,我们仍然可能缓存部分对象。

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

于 2020-04-05T21:40:29.120 回答