1.了解并上手

 3 export  default  class Goods{
 4     private  static  _instance:Goods;
 5     private num:number=3;
 6     private constructor(){   //私有构造函数
 7     
 8      }
 9     //常规写法
10     public static getInstance():Goods{
11     if(!Goods._instance) Goods._instance=new  Goods();
12     return Goods._instance;
13     }
14 //返回这个实例,
15     //使用执行器函数get写
16     //当获取这个值的时候会调用这个函数
17 public static get _instance():Goods{ 18 return Goods._instance || (Goods._instance=new Goods()) 19 } 20 21 public run():void{ //实例方法 22 console.log("aa") 23 } 24 25 } 26 27 //外部执行方式 28 1.Goods.getInstance().run() //这样会执行这个run方法,因为getInstance是个静态方法,必须使用类调用,而这个静态方法返回的是一个实例,就能调用实例方法run(); 29 2.Goods.instance.run()//get执行方式 30 31 //每次调用都是同一个对象,所以Goods.instance=Goods.instance这两个相等,都是一个实例;

2.使用场景

一个操作系统中可以存在多个打印任务,但我们只有一个打印机,同一时间只能有一个正在工作的任务,这个时候内存中打印机的这个类就必须是单例的

------------恢复内容开始------------

1.了解并上手

 1 //常规中,先判断这个实例是否已经被new 过了,如果没有,让这个这个静态属性Goods._instance等于这个实例;函数返回的是这个实例
 2 
 3 export  default  class Goods{
 4     private  static  _instance:Goods;
 5     private num:number=3;
 6     private constructor(){   //私有构造函数
 7     
 8      }
 9     //常规写法
10     public static getInstance():Goods{
11     if(!Goods._instance) Goods._instance=new  Goods();
12     return Goods._instance;
13     }
14 //返回这个实例,
15     //使用执行器函数get写
16     //当获取这个值的时候会调用这个函数
17     public static get  _instance():Goods{
18     return Goods._instance || (Goods._instance=new Goods())
19     }
20 
21     public run():void{   //实例方法
22     console.log("aa")
23     }
24     
25 }
26 
27 //外部执行方式
28 1.Goods.getInstance().run()  //这样会执行这个run方法,因为getInstance是个静态方法,必须使用类调用,而这个静态方法返回的是一个实例,就能调用实例方法run();
29 2.Goods.instance.run()//get执行方式
30 
31 //每次调用都是同一个对象,所以Goods.instance=Goods.instance这两个相等,都是一个实例;

2.使用场景

一个操作系统中可以存在多个打印任务,但我们只有一个打印机,同一时间只能有一个正在工作的任务,这个时候内存中打印机的这个类就必须是单例的

------------恢复内容结束------------

发表回复