posts - 6,comments - 0,views - 916

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.使用场景

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

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

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.使用场景

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

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

posted on   瞿~锐〃  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示