静态主类 - AS3

时间:2012-11-21 15:40:22

标签: actionscript-3 flash main

有没有办法制作主类 - 基于主.fla - 静态的那个?所以我们可以在java中使用它,能够从其他类引用它,因为我必须将main本身的实例作为参数传递给类,否则我会松散引用。 我试图添加静态前缀但似乎as3不允许它。

2 个答案:

答案 0 :(得分:9)

AS3中没有静态类的概念。

您可以使用单例模式公开主类的唯一实例:

public class Main extends Sprite {

    public static var instance:Main;

    public function Main() {
         instance = this;
    }

...或者只是将其他属性/方法标记为static,尽管它变得更难管理。

我需要提一下,虽然使用static有时会导致错误的代码设计(相反,您可以通过其构造函数将Main的实例传递给需要它的类)

答案 1 :(得分:3)

这不是流行的答案,我知道...... 使用静态属性来公开实例是一个非常糟糕的主意。 Singleton反模式很受欢迎,但不应该,它导致不良做法,并且不必要地将类相互联系起来。

您需要问自己是否真的需要引用其他类中的主类? AS3有一个事件系统,可以为您提供所需的所有松耦合。如果显示对象需要与主类实例通信,则可以通过显示列表发送事件来完成。

依赖关系管理的问题最好由依赖注入框架处理(其中许多框架具有一些集中式消息传递系统,它远远超过了置顶事件的事件)。如果您觉得任何流行的(PureMVC,RobotLegs等)过度,您可以自己轻松创建(简单且有限的)。

有很多工具和模式永远不会依赖单身人士或静态实例访问器,因为它们会让你的生活变得悲惨,你的代码也很脆弱,不灵活,不可测试,不可靠和错误。

相关问题