flash中的单例设计模式

//单例设计模式
//登陆界面:
//DataModel.as
import mx.events.EventDispatcher;
class MemSys.DataModel{
 private static var model:DataModel;
 public var addEventListener:Function;
 public var removeEventListener:Function;
 private var dispatchEvent:Function;
 private static var mixin1=EventDispather.initialize(DataModel.prototype);
 private function DataModel(){
  
  }
 public static function getInstance():DataModel{
  if(model==null){
   model=new DataModel();
   }
  return model;
  }
 public function login(loginID:String,pwd:String):Void{
  var loginResult:Boolean;
  if(pwd=="pwd"){
   loginResult=true;
   }
  else{
   loginResult=false;
   }
  dispathEvent({type:"onLogin",target:this,loginResult:loginResult});
  }
 }
 //类只能创建一个实例,类的构造函数必须是私有的,外界无法用new创建它,只有通过类的静态方法getInstance()来创建,它会检查属性是否已经存在,如model;如存在则将那个已创建的实例返回,否则就用自己的属性创建并返回,任何的外界都可以共享。
 单例通常是用来保持系统的单一状态的数据,如浏览人数的统计,在线或离线等,多个实例无法有统一的状态数据
 
在FLASH中什么情况适合使用单例模式?
在具备以下的需求时,我们可以考虑使用单例模式:需要一个通用的业务逻辑处理器来处理同一类型的工作任务,需要一个数据访问对象来处理一系列的外部数据交互工作,前提是使用一致的数据访问手段.
由于FLASH是基于客户端的软件,客户端基本上就是一个人在使用,所以我们可以忽略通常在软件设计中需要考虑的线程并发问题(在B/S,C/S架构的系统中,通常这些任务由服务器来做).而且,虽然FLASH本身是多线程的,但是它并没有允许我们编程控制线程.
因此,我们在FLASH中使用单例模式的好处就是:节约系统开销,增大代码重用性.其实最大的好处就仅是节约系统开销而已.至于代码重用我们可以基于自身对软件设计的经验使用各种方式做到.

你可能感兴趣的:(单例设计模式)