We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 68ca780 commit 85fbb62Copy full SHA for 85fbb62
1 file changed
flyweight/README.md
@@ -219,3 +219,13 @@ public class WeaponShop {
219
shop.enumrateShelves();
220
```
221
## 效果
222
+
223
+使用 Flyweight 模式时, 传输、 查找和/或计算外部状态都会产生运行时的开销, 尤其当 flyweight 原先被存储为内部状态时。然而,空间上的节省抵消了这些开销。共享的 flyweight 越多, 空间节省也就越大。
224
225
+存储节约由以下几个因素决定:
226
227
+* 因为共享,实例总数减少的数目
228
+* 对象内部状态的平均数目
229
+* 外部状态是计算的还是存储的共享的Flyweight越多,存储节约也就越多。节约量随着共享状态的增多而增大。当对象使用大量的内部及外部状态,并且外部状态是计算出来的而非存储的时候,节约量将达到最大。所以,可以用两种方法来节约存储:用共享减少内部状态的消耗,用计算时间换取对外部状态的存储。
230
231
+Flyweight 模式经常和 Composite 模式结合起来表示一个层次式结构, 这一层次式结构是一个共享叶节点的图。 共享的结果是, Flyweight的叶节点不能存储指向父节点的指针。而父节点的指针将传给 Flyweight 作为它的外部状态的一部分。这对于该层次结构中对象之间相互通讯的方式将产生很大的影响。
0 commit comments