gpt4 book ai didi

actionscript-3 - 如何避免使用接口(interface)重用相同的实现代码?

转载 作者:行者123 更新时间:2023-12-01 04:11:44 25 4
gpt4 key购买 nike

首先,我为“又一个界面问题”道歉。不过,我认为这个问题可能值得一问,因为这是一个奇怪的问题。我正在使用的项目使用 Actionscript 3,但这更像是一个一般的 OOP 问题。

情况如下:

我有一个已经从基类继承的类;它是电子游戏中的一个对象。 (假设它是一艘宇宙飞船。)在我的游戏中,我想同时在屏幕上显示许多许多宇宙飞船,因此我决定使用链表结构创建一个对象池。

从逻辑上讲,因为类 Spaceship 已经从基类继承,我将使用接口(interface)来定义与链表有关的方法。此外,这样做可以让我将这些方法扩展到其他类——例如 Asteroid 类、Bullet 类或 Particle 类。

这就是问题所在——接口(interface)的优势在于它允许您根据需要重新定义所使用的每个类的实现。但是,对于链表之类的东西,代码不会在类之间改变。因为我计划有很多类来实现这些对象池方法,所以我真的很想避免在每个新类中一遍又一遍地重用相同的实现代码。

问题:有没有办法避免为我使用的每个类重复使用相同的链表代码?或者这只是一种必然?这似乎违反了一次且仅一次的原则。是否可以在继承 block 中定义完整的函数,而不仅仅是其原型(prototype)?

如果这是一个愚蠢的问题,请告诉我。 (如果我问它是否是,它可能是,但是,嘿,如果不偶尔愚蠢就无法学习。)似乎应该有一种更合乎逻辑的方式来做这样的事情。

最佳答案

在其他支持多重继承的语言中,有一种简单的方法可以做到这一点,而您的所有游戏对象都不需要有一个共同的祖先:您的宇宙飞船可以从基船类以及链表元素类继承。不幸的是,AS3 不支持多重继承,因此您必须选择以下之一:

A. 完全按照您的建议使用界面

或者

B. 让您的所有游戏对象基类都继承自实现链表功能并扩展 Sprite(或 MovieClip)的共同祖先,而不是直接扩展 Sprite 或 MovieClip 的游戏对象基类。

我可能会选择后者,以解决您的确切问题。我可能会从 Sprite 或 MovieClip 派生并调用 GamePoolObject 或类似的东西......

关于actionscript-3 - 如何避免使用接口(interface)重用相同的实现代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com