将方法放在一个Big类中是否“节省内存”? (很多物件)

时间:2012-04-14 02:53:24

标签: c# xna

我正在开发一个针对移动平台的游戏,其中内存始终是一个问题。

我正在使用基础抽象类敌人。所有其他敌人都将是这一类的变种。

我的初衷是存储更新基类中敌人的方法,然后将特定行为存储在每个子敌人类中。

我的问题是:每个负载(或级别)可能有数百个敌人,我是否会在每个敌人所指的一个大班级中将所有行为写入记忆?换句话说,拥有数百个敌人,每个都拥有大量的行为代码,需要比将所有内容存储在单个引用类中更多的内存吗?

初步想法:

enemy.Update()

记忆保存理念:

//Static class is named EnemyBehavior
EnemyBehavior.UpdateEnemy(enemy)

2 个答案:

答案 0 :(得分:8)

虽然您的类的每个实例都有自己的私有,内存消耗的变量副本,但的方法定义的单独副本。方法使用内存每,而不是每个实例。这才有意义,因为类实例不可能更改方法的定义。所以,对不起,但你的想法不会节省任何记忆。

答案 1 :(得分:4)

这不是记忆的作用。堆将需要存储数据和引用,而不是实际代码。因此,您不会通过决定在静态类中存储“公共代码”的位置来保存任何内容 - 将代码与对象实例一起使用并不意味着将其物理复制到每个实例中。

你的建议与面向对象编程的全部原因背道而驰,即面向行为的封装和关注点的分离。

tl; dr - 将代码保存在类本身中。