学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > AS3 >

第九节 单例模式

设置字体:
----------------------------------
  在使用其实语言中,比如C++,JAVA ,会用到一些设计模式,使程序结构更加合理化,今天我们来看一下设计模式中最基本的一种——单例模式。   讲单例模式之前我们先看一个普通的例子,先建一个普通的类:
package net.smilecn{          
public class MySubClass{                  
public var num:Number = 0;                  
public function MySubClass(){          }      }  }
  下面再建两个类,这两个类中都生成MySubClass的实例
package net.smilecn{           
import net.smilecn.MySubClass          
public class OneClass{                 
private var mySubClass:MySubClass= new MySubClass();                  
public function OneClass(){             
mySubClass.num = 5;   }           }       }        
package net.smilecn{          
import net.smilecn.MySubClass          
public class TwoClass{                  
private var mySubClass:MySubClass=new MySubClass();                  
public function TwoClass(){             
trace(mySubClass.num);//结果为0          }           }       }
  在OneClass和TwoClass这两个类中都有MySubClass的实例,如果我们改变其中一个实例,其它的是不会更改的,因为它们不是同一个实例,所以第一个把num改为5,第二个里面仍是0,它们间没有联系。   单例模式的意思是不管怎么样都只产生一个实例,我们现在来修改MySubClass的代码:
package net.smilecn{          
public class MySubClass{                   
private static var mySubClass : MySubClass; 
 public var num:Number = 0;                  
public function MySubClass(){             
if ( MySubClass.mySubClass != null )                
throw new Error( "只能产生一个实例" );  }   
public static function getInstance():MySubClass{             
if ( mySubClass == null )                 
mySubClass = new MySubClass();                
return mySubClass;          }      }  }
  在这里我们加了一个getInstance的方法,一个mySubClass 的静态变量,getInstance也是静态的,静态的作用在于我们可以用 类名.方法名 来访问这个方法,比如:MySubClass.getInstance,接下来在修改另个两个类
package net.smilecn{          
import net.smilecn.MySubClass          
public class OneClass{                  
private var mySubClass:MySubClass=MySubClass.getInstance();                  
 public function OneClass(){mySubClass.num = 5;          }           }       }       
----------------------------------
课程列表
重点难点
赞助链接