1 普通的单例写法this
缺点:每一个单例类里都要写instance和getInstance。spa
class Single{ private static instance:Single; public static getInstance():Single{ if(this.instance == null){ this.instance = new Single(); } return this.instance; } public run(){ } } //使用 Single.getInstance().run();
2 Module写法code
优势:不须要使用getInstance,调用更简单blog
缺点:外部不能直接调用属性,只能调用方法继承
module Single { var name:string = "Test2"; export function run(){ console.log(name); } } //使用 Single.run();
3 继承BaseClassget
优势:继承后不用写instance和getInstance。string
缺点:getInstance()返回值是any!!致使没法用"."号访问其public属性和方法。io
class BaseClass { public static getInstance():any { var Class:any = this; if (!Class._instance) { Class._instance = new Class(); } return Class._instance; } } class Single extends BaseClass{ public run(){ } } //使用 Single.getInstance().run();