说我有以下类别的设置......
道路 - 扩展MovieClip
汽车 - 延伸道路 控制器 - 扩展汽车
我想在其中加入一些常用的数学函数,以使它们更快,例如(用一些快速的按位版本替换Math类)。
将这些函数合并到所有函数中的最佳方法是什么,而无需在类中编写函数或从函数类扩展。是以最快的方式导入课程还是他们更好的方式?
答案 0 :(得分:1)
我同意您的设计可能需要一些工作的评论。如果没有以某种方式引用它的import语句,则不能在另一个类中使用Class - 即使您只是导入了Class实现的接口。
处理此问题最灵活的方法是将功能对象传递给需要它的对象,而不是让该对象创建实例本身。这将允许您在需要时交换不同的实现(例如,您可能希望使用模拟实例进行单元测试,或者您可能需要针对移动设备优化的略微不同的功能)。
您可以在构造函数中传入实例,也可以使用属性(这样可以自由地在运行时更改实现)。
答案 1 :(得分:1)
您可以创建一个可以导入任何类的公共函数。基本语言中的一些示例是navigateToURL()和getTimer()。这些只是包中的公共函数,而不是类。 所以创建一个像这样的公共函数
package nameOfYourPackage{
public function doSomething(a:arguments):returnType
{
// Stuf the function does goes here;
}
}
然后您可以将其导入任何类,如下所示:
import nameOfYourPackage.doSomething;
然后你可以在类中的任何地方调用它,将其导入为:
doSomething(args);