单例模式

 单例模式

在MVC中,Model是最重要的部件,正是由于Model的独立,才使得界面和数据处理分离开。如何才能让Model和View保持独立,每个View却可以使用同一个Model中的数据?这是整个MVC的基础。要做到这一点,需要运用单例(Singleton)模式,让Model在全局保持唯一性。当View使用的是同一个Model中的数据时,就实现了数据的同步。当Model数据变更时,所有监听Model的View更新数据时,依然能够同步更新。

单例模式,顾名思义,保持实例唯一,限制一个类只能有一个实例。通常我们要创建一个类的实例时,是通过构造函数完成的,比如:var myList:List = new List();这句代码创建了一个List控件的实例。使用构造函数,可以创建多个实例。为了要实例只有一个,需要借助类的成员变量。请看下面的例子。

文件:tree/ singleTon.as

package tree{
public class singleTon {
//定义了一个静态变量
private static var_instance: singleTon;
//公共属性,用来测试的数据
public var data:String = "Singleton Example";
//核心方法,用来访问实例
public static function getInstance():singleTon{
//如果instance还没有被实例化,则调用构造函数,这个动作只执行一次
if(_instance == null){
_instance = new ModelLocator();
}
//总是返回同一个实例对象
return _instance;
}
//构造函数,初始化数据
public function singleTon(){
data = "Singleton Example";

}
}

在这个类中,定义了一个静态方法getInstance和一个静态变量instance。instance就是唯一的实例对象,在程序中要访问这个对象,都必须通过getInstance方法,而不是通过构造函数。当第一次调用getInstance方法时,会调用一次构造函数,创建实例,以后就直接返回实例,从而实现了实例的唯一性。

比如我们在程序中要访问对象的data属性,可以参照下面的代码:

<mx:Script>
<![CDATA[
import model. singleTon;   
internal function initApp():void{
//获得实例
var instance: singleTon= singleTon.getInstance();
//访问实例属性
trace(instance.data)
}
]]>
</mx:Script>

在MXML文件中,使用singleTon.getInstance()获得实例对象。不管这段代码写在哪一个组件中,都会得到同一个singleTon实例。

这个例子的源代码在程序SingletonExample中。

单例模式使得数据和界面组件分离,实现了数据的全局共享,是设计模式中的经典之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值