单例模式
在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{ |
在这个类中,定义了一个静态方法getInstance和一个静态变量instance。instance就是唯一的实例对象,在程序中要访问这个对象,都必须通过getInstance方法,而不是通过构造函数。当第一次调用getInstance方法时,会调用一次构造函数,创建实例,以后就直接返回实例,从而实现了实例的唯一性。
比如我们在程序中要访问对象的data属性,可以参照下面的代码:
<mx:Script> |
在MXML文件中,使用singleTon.getInstance()获得实例对象。不管这段代码写在哪一个组件中,都会得到同一个singleTon实例。
这个例子的源代码在程序SingletonExample中。
单例模式使得数据和界面组件分离,实现了数据的全局共享,是设计模式中的经典之一。