具有二维数组的Flyweight模式

时间:2013-12-25 18:43:52

标签: java design-patterns memory-management flyweight-pattern

我有一个Objects Bee的矩阵(二维数组),我想申请 flyweight模式,我应该如何应用它?,如果我直接用巨大的大小实例化矩阵,我会分配太多的内存。是否有一种有效的方式来应用模式?。

我已经检查过该模式适用于Bee对象,但我关注矩阵内存。 PD我正在使用java。

1 个答案:

答案 0 :(得分:0)

直接来自维基百科

“Flyweight是一种软件设计模式。一个flyweight是一个通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象;当一个简单的重复表示将使用一个对象时,它是一种大量使用对象的方法不可接受的记忆量。“

请注意,模式建议在重复表示的情况下重复使用该对象。首先,您需要查看矩阵中有多少Bee对象可能具有重复的对象,因此匹配并重用第一个对象而不是在内存中创建新对象。

创建一个可以在已创建对象池中查找的工厂。如果找到匹配项,它将从池中返回该对象,如果没有,将在内存中创建一个新对象并返回它。

还有其他方法可以节省内存,但是需要查看完整的代码。