Skip to content

Commit 85fbb62

Browse files
committed
修改 README
1 parent 68ca780 commit 85fbb62

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

flyweight/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,3 +219,13 @@ public class WeaponShop {
219219
shop.enumrateShelves();
220220
```
221221
## 效果
222+
223+
使用 Flyweight 模式时, 传输、 查找和/或计算外部状态都会产生运行时的开销, 尤其当 flyweight 原先被存储为内部状态时。然而,空间上的节省抵消了这些开销。共享的 flyweight 越多, 空间节省也就越大。
224+
225+
存储节约由以下几个因素决定:
226+
227+
* 因为共享,实例总数减少的数目
228+
* 对象内部状态的平均数目
229+
* 外部状态是计算的还是存储的共享的Flyweight越多,存储节约也就越多。节约量随着共享状态的增多而增大。当对象使用大量的内部及外部状态,并且外部状态是计算出来的而非存储的时候,节约量将达到最大。所以,可以用两种方法来节约存储:用共享减少内部状态的消耗,用计算时间换取对外部状态的存储。
230+
231+
Flyweight 模式经常和 Composite 模式结合起来表示一个层次式结构, 这一层次式结构是一个共享叶节点的图。 共享的结果是, Flyweight的叶节点不能存储指向父节点的指针。而父节点的指针将传给 Flyweight 作为它的外部状态的一部分。这对于该层次结构中对象之间相互通讯的方式将产生很大的影响。

0 commit comments

Comments
 (0)