实现AS3的Singleton的两种方法
1 构造函数随机参数
利用随机数,当做构造函数的参数,实现构造函数无法随意调用。
package {
class Singleton {
private static var _instance:Singleton = null;
// secret known only to this class
private static const secret:Number = Math.random();
/**
* @private
*/
public function Singleton(enforcer:Number) {
if (enforcer != secret) {
throw new Error("Error: use Singleton.instance instead");
}
}
/**
* Global single instance
*/
public static function get instance():Singleton {
if (_instance == null) {
_instance = new Singleton(secret);
}
return _instance;
}
}
}
2 私有类
在 AS3 文件内部的包定义外部实现一个类,这个类就是文件内私有的。
package
{
class Singleton {
private static var _instance:Singleton = null;
public function Singleton(enforcer:PrivateClass) {
}
public function getInstance():Singleton {
if (_instance == null) {
_instance = new Singleton();
}
return _instance;
}
}
}
class PrivateClass {
public PrivateClass() {
}
}
-
转载请注明来自柳大的CSDN博客:blog.csdn.net/poechant
-
分享到:
相关推荐
AS3.0设计模式代码实现汇总是一份涵盖了23种主要设计模式的资源集合,它以ActionScript 3.0编程语言为载体,为开发者提供了丰富的实践案例和详细说明。设计模式是软件工程中经过验证的、在特定情境下解决常见问题的...
单例模式是软件设计模式中的一种经典模式,它在AS3(ActionScript 3)编程环境中同样适用。这种模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。在AS3中,单例模式常用于管理...
在AS3中,模板方法模式可以用于定义基础流程,让子类实现具体的细节。 10. **状态模式(State)**:允许对象在其内部状态改变时改变其行为,看起来好像对象改变了它的类。在AS3中,状态模式常用于处理对象的行为...
AS3.0设计模式是ActionScript 3.0编程中的一种高级技巧,它是一套经过时间验证的解决软件设计问题的通用解决方案。设计模式不是特定的代码或库,而是一种在特定情境下如何组织和构建代码的最佳实践。AS3.0作为Adobe ...
1. 注解驱动:EJB 3.x允许开发者使用注解(如`@Stateless`,`@Stateful`,`@Singleton`,`@MessageDriven`)来声明bean的角色,而无需XML配置文件。 2. 自动依赖注入:通过`@EJB`注解,可以实现bean之间的自动依赖...
- 包括抽象工厂(Abstract Factory)和工厂方法(Factory Method)两种具体模式的讲解,帮助开发者理解对象创建机制。 - **代理模式**(Proxy)(Chapter 6) - 讨论代理模式的原理及其在ActionScript中的应用...
- **接口**:是一种完全抽象的类,只能包含抽象方法(Java 8之后还可以包含默认方法和静态方法),不能有具体实现。接口用于定义行为的标准,多个类可以通过实现同一个接口来支持相同的行为。 - **抽象类**:是具有...
error('The ''start'' matrix must have the same number of columns as X.'); end if isempty(reps) reps = size(CC,3); elseif reps ~= size(CC,3); error('The third dimension of the ''start'' array ...
本文将详细介绍如何在iOS应用中实现页面之间的值传递,主要关注Objective-C和Swift两种语言的不同实现方法。 1. **浅谈页面传值** 页面传值在iOS开发中扮演着重要角色,它可以是简单的字符串、数字,也可以是复杂...
标题提到的"Flex MVC框架下载",指的是提供了两种主流的Flex MVC框架——PureMVC和Cairngorm的SWC库文件。SWC是Adobe Flash和Flex中用于共享库和组件的二进制格式,开发者可以直接将这些库导入到项目中使用,无需...
这里介绍两种常用的方法: **方法一:使用元类** ```python class Singleton(type): def __init__(cls, name, bases, dict_): super(Singleton, cls).__init__(name, bases, dict_) cls._instance = None def...
237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
在描述中提到的"两个指针指向同一个内存空间"的方法,这可能是使用共享实例(Singleton)或者弱引用(Weak Reference)来传递数据。虽然这种方法也能实现数据的传递,但它可能涉及到更多的代码编写和管理,尤其是当...
本文将深入探讨五种主要的传值方法:属性传值、代理传值、Block、通知(NSNotification)以及单例(Singleton)。每种方法都有其适用场景和优缺点,开发者需要根据实际需求选择合适的方式。 1. **属性传值**: ...
2. **多线程实现**:Java中有两种创建线程的方式:一是实现`Runnable`接口,二是继承`Thread`类。线程同步的实现方法包括`synchronized`关键字和`wait()`、`notify()`、`notifyAll()`方法。 3. **String与...
这种行为导致了两种不同的结果: - **对于不可变对象**(如整数、字符串和元组),在函数内部改变这些对象的值并不会影响原始变量。这是因为不可变对象一旦创建就不能改变,任何改变都会创建一个新的对象。 示例...
实现方式有两种:饿汉式(静态代码块)和懒汉式(双重检查锁定)。 #### 13. wait和sleep的区别 - `wait` 方法需要在 `synchronized` 块或方法中使用,并且会导致线程释放锁。 - `sleep` 方法是 Thread 类的方法,...
- **解析:** 重载(overload)和重写(override)是Java中的多态性的两种表现形式: - **重载(overload)**:在同一类中,方法名相同但参数列表不同的多个方法称为重载。这些方法可以在同一个类中实现不同的功能...