我正在开发一个针对移动平台的游戏,其中内存始终是一个问题。
我正在使用基础抽象类敌人。所有其他敌人都将是这一类的变种。
我的初衷是存储更新基类中敌人的方法,然后将特定行为存储在每个子敌人类中。
我的问题是:每个负载(或级别)可能有数百个敌人,我是否会在每个敌人所指的一个大班级中将所有行为写入记忆?换句话说,拥有数百个敌人,每个都拥有大量的行为代码,需要比将所有内容存储在单个引用类中更多的内存吗?
初步想法:
enemy.Update()
记忆保存理念:
//Static class is named EnemyBehavior
EnemyBehavior.UpdateEnemy(enemy)
答案 0 :(得分:8)
虽然您的类的每个实例都有自己的私有,内存消耗的变量副本,但不的方法定义的单独副本。方法使用内存每类,而不是每个实例。这才有意义,因为类实例不可能更改方法的定义。所以,对不起,但你的想法不会节省任何记忆。
答案 1 :(得分:4)
这不是记忆的作用。堆将需要存储数据和引用,而不是实际代码。因此,您不会通过决定在静态类中存储“公共代码”的位置来保存任何内容 - 将代码与对象实例一起使用并不意味着将其物理复制到每个实例中。
你的建议与面向对象编程的全部原因背道而驰,即面向行为的封装和关注点的分离。
tl; dr - 将代码保存在类本身中。