gpt4 book ai didi

actionscript-3 - 在 Actionscript 3 中实现单例模式类的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 06:52:44 24 4
gpt4 key购买 nike

由于 AS3 不允许私有(private)构造函数,因此构造单例并保证构造函数不是通过“new”显式创建的唯一方法似乎是传递单个参数并检查它。

我听过两个建议,一个是检查调用者并确保它是静态 getInstance(),另一个是在同一个包命名空间中有一个私有(private)/内部类。

传递给构造函数的私有(private)对象似乎更可取,但看起来您不能在同一个包中拥有私有(private)类。这是真的?更重要的是,这是实现单例的最佳方式吗?

最佳答案

对 enobrev 的回答稍作调整,就是将实例作为 setter/getter 。有人会说这更优雅。此外,如果您在调用 getInstance 之前调用构造函数,则 enobrev 的答案不会强制执行 Singleton。这可能并不完美,但我已经对此进行了测试并且它有效。 (在“Advanced ActionScrpt3 with Design Patterns”一书中肯定还有另一种好方法)。

package {
public class Singleton {

private static var _instance:Singleton;

public function Singleton(enforcer:SingletonEnforcer) {
if( !enforcer)
{
throw new Error( "Singleton and can only be accessed through Singleton.getInstance()" );
}
}

public static function get instance():Singleton
{
if(!Singleton._instance)
{
Singleton._instance = new Singleton(new SingletonEnforcer());
}

return Singleton._instance;
}
}

}
class SingletonEnforcer{}

关于actionscript-3 - 在 Actionscript 3 中实现单例模式类的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/131050/

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