将方法放在一个大类中是否“节省内存”?(许多对象)

本文关键字:内存 节省 节省内存 多对象 是否 方法 一个 | 更新日期: 2023-09-27 18:31:00

我正在为内存始终是一个问题的moblie平台开发一款游戏。

我正在使用一个基本的抽象类敌人。 所有其他敌人都将是该类的变体。

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

我的问题是:每个负载(或关卡)可能有数百个敌人,我是否会节省内存,将所有行为写在一个大类中,每个敌人都引用? 换句话说,拥有数百个敌人,每个敌人都有一船 behaior 代码,是否比将所有内容存储在单个参考类中需要更多的内存?

最初的想法:

enemy.Update()

节省内存的理念:

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

将方法放在一个大类中是否“节省内存”?(许多对象)

尽管类的每个实例都有自己的私有、消耗内存的变量副本,但它没有其方法定义的单独副本。方法按消耗内存,而不是按实例消耗内存。这才有意义,因为类实例不可能更改方法的定义。所以,对不起,但你的想法不会节省任何内存。

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

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

tl;dr - 将代码与类本身一起保留。