`
ch_kexin
  • 浏览: 876818 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

AS3单例模式(Singleton)

 
阅读更多

单例模式的优点:

1.一个静态实例,把共享的属性方法能在任何一个程序集调用,信息有效的实现操作。(数据以一个静态实例的模式贯通全局)

2.有效降低大模块之间的耦合度。

(注意:缺点就是耗费内存资源。单例不能滥用)

(注意:单例模式,顾名思义。只有一个实例的设计模式。)

单利模式的由来:

我们只要仔细地想想看,全局变量确实可以提供一个全局访问点,但是它不能防止别人实例化多个对象。通过外部程序来控制的对象的产生的个数,势必会系统的增加管理成本,增大模块之间的耦合度。所以,最好的解决办法就是让类自己负责保存它的唯一实例,并且让这个类保证不会产生第二个实例,同时提供一个让外部对象访问该实例的方法。自己的事情自己办,而不是由别人代办,这非常符合面向对象的封装原则。

通用类写法:(提供三种常用的)

1.类只有一个实例
View Code

1 package
2 {
3     public class Single
4     {
5         private static var instance:Single = new Single();
6         
7         private var _name:String = '';
8         
9         public function get name():String
10         {
11             return _name;
12         }
13         
14         public function set name(value:String):void
15         {
16             _name = value;
17         }
18         
19         public function Single()
20         {
21             if(instance)
22             {
23                 throw new Error("Single.getInstance()获取实例");
24             }
25         }
26         
27         public static function getInstance():Single
28         {
29             return instance;
30         }
31     }
32 }

复制代码

2.类可以有多个实例,内部实例能贯通全局
View Code

1 package
2 {
3     public class Single
4     {
5         private static var instance:Single;
6         
7         private var _name:String = '';
8         
9         public function get name():String
10         {
11             return _name;
12         }
13         
14         public function set name(value:String):void
15         {
16             _name = value;
17         }
18         
19         public function Single()
20         {
21             
22         }
23         
24         public static function getInstance():Single
25         {
26             if(instance == null)
27             {
28                 instance = new Single();
29             }
30             return instance;
31         }
32     }
33 }

复制代码

3.只有一个实例,用内部类实现只能实例化一次,外部不能访问该内部类自然就实例化不了
View Code

1 package
2 {
3     public class Single
4     {
5         private static var instance:Single;
6         
7         private var _name:String = '';
8         
9         public function get name():String
10         {
11             return _name;
12         }
13         
14         public function set name(value:String):void
15         {
16             _name = value;
17         }
18         
19         public function Single(content:ConSingle)
20         {
21             
22         }
23         
24         public static function getInstance():Single
25         {
26             if(instance == null)
27             {
28                 instance = new Single(new ConSingle);
29             }
30             return instance;
31         }
32     }
33 }
34 
35 class ConSingle
36 {
37     
38 }

复制代码

在使用单利模式的时候,请注意一点。

不要在单例里面直接写属性(如:public var name:String)当必须写属性的时候用静态属性(public static var name:String),一般单例模式上面使用的是方法。(getInstance().getName());

 

分享到:
评论

相关推荐

    JavaScript的单例模式 (singleton in Javascript)

    单例模式的基本结构: 代码如下: MyNamespace.Singleton = function() { return {}; }(); 比如: 代码如下: MyNamespace.Singleton = (function() { return { // Public members. publicAttribute1: true, ...

    Flask框架单例模式实现方法详解

    本文实例讲述了Flask框架单例模式实现方法。分享给大家供大家参考,具体如下: 单例模式: 程序运行时只能生成一个实例,避免对同一资源产生冲突的访问请求。 Django admin.py下的admin.site.register() , site...

    javascript 单例模式详解及简单实例

    JS 单例模式 概要: 单例指一个类只有一个实例,这个类自行创建这个实例。 利用对象字面量直接生成一个单例: var singleton = { prop: 1, method: function(){ console.log(a); //1 } } 严格的说对象字面量...

    javascript 单例/单体模式(Singleton)

    单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向整个系统公开这个实例接口 Java中大概是这个样子 代码如下: class Singleton { //私有,静态的类自身实例 ...

    详解python单例模式与metaclass

    单例模式的实现方式 将类实例绑定到类变量上 class Singleton(object): _instance = None def __new__(cls, *args): if not isinstance(cls._instance, cls): cls._instance = super(Singleton, cls).__new__...

    singleton-mysqli:使用单例模式的 Mysqli 数据库包装器

    单例 Mysqli 包装器 单身人士: 确保一个类只有一个实例,并提供对它的全局访问点。 封装了“即时初始化”或“首次使用时的初始化”。 如何使用这个: DB::setup($user, $pass, $db); //pass a 4th arg if your ...

    Think in ActionScript 3.0Ⅰ Ⅱ Ⅲ汇总

    4.7.4 单例模式(Singleton Pattern) 5. 多态(Polymorphism) 5.1 多态的概念 5.2 多态存在的三个必要条件 5.3 TestPolymoph.as —— 多态的应用,体会多态带来的好处 5.4 TestPolymoph 内存分析 5.5 多态的好处 ...

    Javascript模块模式分析

    Douglas Crockford已经传授了一个有用的单例模式(singleton pattern)实现此规则,我认为他的模式有益于你基于YUI的那些应用。Douglas叫它模块模式(module pattern)。它是如下工作的: 创建一个命名空间对象:...

    Javascript的一种模块模式

    Douglas Crockford已经传授了一个有用的单例模式(singleton pattern)实现此规则,我认为他的模式有益于你基于YUI的那些应用。Douglas叫它模块模式(module pattern)。它是如下工作的: 1、创建一个命名空间对象:...

    day020-继承加强和设计模式代码和笔记.rar

    通过单例模式获取到对象后。就是只有一个对象的类 方法全部都是非static修饰的,调用方式:对象名.方法名(...); 4. 工具类命名: XxxUtil、XxxUtils、XxxTool、XxxTools 3. jar 包 (掌握)...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    At present business processes are old and explicit in industrial market of certification and detection filed, as well as users can not have effective and convenient communication with detection ...

Global site tag (gtag.js) - Google Analytics