模式共计八种:
- 单例模式
- 构造器模式
- 建造者模式
- 代理模式
- 外观模式
- 观察者模式
- 策略模式
- 迭代器模式
设计模式的提出,为了更好的解耦,可拓展,服务可靠,不限定某种语言的实现
单例模式
概念
一个类只有一个实例,如果存在就不实例化,如果不存在则new,以保证一个类只有一个实例
作用
- 模块间通信
- 保证某个类的对象的唯一性
- 防止变量污染
注意
- this的使用
- 闭包容易stack over flow需要及时清理
- 创建新对象成本较高
实际案例
如网站的计数器,多线程的线程池
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
| (function(){ let fish = null function catchFish() { if(fish) { return fish }else { fish = document.querySelector('#cat') return { fish, water: function() { let water = this.fish.getAttribute('weight') this.fish.setAttribute('weight', ++water) } } } }
setInterval(() => { catchFish().water() }, 3*60*60*1000) })()
|
构造器模式