`
Poechant
  • 浏览: 229737 次
博客专栏
Bebe66e7-3a30-3fc9-aeea-cfa3b474b591
Nginx高性能Web服务...
浏览量:24335
5738817b-23a1-3a32-86de-632d7da73b1e
Cumulus实时媒体服务...
浏览量:22105
社区版块
存档分类
最新评论

实现AS3的Singleton的两种方法

 
阅读更多

实现AS3的Singleton的两种方法

  • 作者:柳大·Poechant
  • 邮箱:zhongchao.ustc#gmail.com (# -> @)
  • 博客:blog.csdn.net/poechant
  • 日期:April 8th, 2012

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设计模式代码实现汇总

    AS3.0设计模式代码实现汇总是一份涵盖了23种主要设计模式的资源集合,它以ActionScript 3.0编程语言为载体,为开发者提供了丰富的实践案例和详细说明。设计模式是软件工程中经过验证的、在特定情境下解决常见问题的...

    as3 设计模式 单件模式 源码

    单例模式是软件设计模式中的一种经典模式,它在AS3(ActionScript 3)编程环境中同样适用。这种模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。在AS3中,单例模式常用于管理...

    actionscript3设计模式源码

    在AS3中,模板方法模式可以用于定义基础流程,让子类实现具体的细节。 10. **状态模式(State)**:允许对象在其内部状态改变时改变其行为,看起来好像对象改变了它的类。在AS3中,状态模式常用于处理对象的行为...

    AS3.0设计模式

    AS3.0设计模式是ActionScript 3.0编程中的一种高级技巧,它是一套经过时间验证的解决软件设计问题的通用解决方案。设计模式不是特定的代码或库,而是一种在特定情境下如何组织和构建代码的最佳实践。AS3.0作为Adobe ...

    使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)

    1. 注解驱动:EJB 3.x允许开发者使用注解(如`@Stateless`,`@Stateful`,`@Singleton`,`@MessageDriven`)来声明bean的角色,而无需XML配置文件。 2. 自动依赖注入:通过`@EJB`注解,可以实现bean之间的自动依赖...

    (FLEX)Advanced ActionScript 3 with Design Patterns - 2006 (Adobe)

    - 包括抽象工厂(Abstract Factory)和工厂方法(Factory Method)两种具体模式的讲解,帮助开发者理解对象创建机制。 - **代理模式**(Proxy)(Chapter 6) - 讨论代理模式的原理及其在ActionScript中的应用...

    易保笔试题目.doc

    - **接口**:是一种完全抽象的类,只能包含抽象方法(Java 8之后还可以包含默认方法和静态方法),不能有具体实现。接口用于定义行为的标准,多个类可以通过实现同一个接口来支持相同的行为。 - **抽象类**:是具有...

    MATLAB实现K-means聚类

    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页面传值

    本文将详细介绍如何在iOS应用中实现页面之间的值传递,主要关注Objective-C和Swift两种语言的不同实现方法。 1. **浅谈页面传值** 页面传值在iOS开发中扮演着重要角色,它可以是简单的字符串、数字,也可以是复杂...

    Flex MVC框架下载

    标题提到的"Flex MVC框架下载",指的是提供了两种主流的Flex MVC框架——PureMVC和Cairngorm的SWC库文件。SWC是Adobe Flash和Flex中用于共享库和组件的二进制格式,开发者可以直接将这些库导入到项目中使用,无需...

    Python经典面试题

    这里介绍两种常用的方法: **方法一:使用元类** ```python class Singleton(type): def __init__(cls, name, bases, dict_): super(Singleton, cls).__init__(name, bases, dict_) cls._instance = None def...

    java面试宝典

    237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...

    自己突然间用到了代理

    在描述中提到的"两个指针指向同一个内存空间"的方法,这可能是使用共享实例(Singleton)或者弱引用(Weak Reference)来传递数据。虽然这种方法也能实现数据的传递,但它可能涉及到更多的代码编写和管理,尤其是当...

    iOS 传值方法(属性传值、代理传值、Block、通知、单例)

    本文将深入探讨五种主要的传值方法:属性传值、代理传值、Block、通知(NSNotification)以及单例(Singleton)。每种方法都有其适用场景和优缺点,开发者需要根据实际需求选择合适的方式。 1. **属性传值**: ...

    JAVASQL面试题目.pdf

    2. **多线程实现**:Java中有两种创建线程的方式:一是实现`Runnable`接口,二是继承`Thread`类。线程同步的实现方法包括`synchronized`关键字和`wait()`、`notify()`、`notifyAll()`方法。 3. **String与...

    Python Interview

    这种行为导致了两种不同的结果: - **对于不可变对象**(如整数、字符串和元组),在函数内部改变这些对象的值并不会影响原始变量。这是因为不可变对象一旦创建就不能改变,任何改变都会创建一个新的对象。 示例...

    java面试问题汇总(非常全面)

    实现方式有两种:饿汉式(静态代码块)和懒汉式(双重检查锁定)。 #### 13. wait和sleep的区别 - `wait` 方法需要在 `synchronized` 块或方法中使用,并且会导致线程释放锁。 - `sleep` 方法是 Thread 类的方法,...

    JAVA面试题目

    - **解析:** 重载(overload)和重写(override)是Java中的多态性的两种表现形式: - **重载(overload)**:在同一类中,方法名相同但参数列表不同的多个方法称为重载。这些方法可以在同一个类中实现不同的功能...

Global site tag (gtag.js) - Google Analytics