|
|
1
4
两者都是好的-在一定的常识范围内。 后一种方法将节省重新分配对象的时间,因此以这种方式回收对象将更为有效—在您的特定示例中,收益可能与此无关,除非堆碎片是一个问题(例如,在RAM非常有限的嵌入式应用程序上)。
所以一般来说,我建议使用“创建一个新对象”的方法(它遵循“最少惊喜”的原则,并且不太可能让其他来处理代码的程序员感到困惑),除非存在性能问题(例如,在手机这样的嵌入式应用程序上,您的资源非常有限,不希望出现碎片堆),在这种情况下,“重用现有对象”可能是一个明智的解决方案。 |
|
|
2
4
我相信两种解决方案都是好的。从内存管理的角度来说,将食物重新定位到另一个位置是不容易出错的,但是由于垃圾收集的原因,您不应该太在意这一点。 我认为,虽然实例化一个新的食物对象更符合逻辑,更接近现实生活中的模型,但重新定位更有效。 |
|
3
1
OOP关注的主要问题不是食物是否重新实例化还是重新定位,而是这种行为在对象之外保持透明。游戏引擎应该告诉对象“你被吃掉了”之类的,但是对象内部如何处理这些不应该被游戏引擎知道。如果在内部,对象保持一个“food”的单子,“consume”方法只是用新的值重新生成food对象,那就好了。这些都是“食物”实现的内部部分,只是不应该在那个类之外知道。 |
|
|
simply lemon · python上链表的添加方法 2 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 2 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 2 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 2 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 2 年前 |