Flyweight设计模式如何最大限度地减少使用的内存?对我而言,它看起来不是创建对象,而是仅外化对象所持有的数据,这意味着使用的内存是相同的。
我错过了什么吗?
答案 0 :(得分:2)
flyweight模式背后的想法是你有一个指向 共享数据的小对象。
也就是说,对象的多个实例共享数据。
如果每个数据只有一个对象,它确实不会使用更少的内存,而是更多,因为你现在拥有指向所述数据的数据和指针。
答案 1 :(得分:1)
对齐和隐藏状态。大多数OO语言中的对象必须至少以8字节边界对齐。 32位处理器只能以4字节边界有效地访问数据。除了对象自己的数据之外,额外的空间用于为每个对象存储隐藏的类指针(4个字节)。表示一点的两个对象然后至少占用16个字节。在64位处理器上,它通常是16字节对齐。
在某些OO语言中,值对象用于处理小整数等常见情况。 Smalltalk实现具有31位小整数,并使用额外位来表明情况就是这样。
答案 2 :(得分:1)
引自http://www.oodesign.com/flyweight-pattern.html
此模式的目的是使用共享来支持大量数据 具有部分内部状态的对象的共同点 国家的其他部分可能会有所不同。
Flyweight是一种软件设计模式。 flyweight是一个对象 通过与其他人共享尽可能多的数据来最小化内存使用 类似的对象;当a时,它是一种大量使用对象的方法 简单的重复表示将使用不可接受的数量 存储器中。