JS:设计模式的单例模式、观察者模式、发布订阅模式(五颗星)
1.单例模式
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点
核心:确保只有一个实例,并提供全局访问
实现:假设要设置一个管理员,多次调用也仅设置一次,我们可以缓存一个内部变量来实现这个单例
<script> // 正常来说,创建出来的是两个实例 function Person(name){ this.name=name } var p1=new Person("张三") var p2=new Person("李四") // 正常来说,创建出来的是两个实例 console.log(p1===p2)//false // 单例模式:保证一个类有且只有一个实例----类似于管理员的角色 var instance=null function Animal(name){ // 第二次实例化-------a2 // 此时 instance = a1-----此时已经产生实例了 if(instance){ return instance // 返回了a1 -------- a2=a1 } // 第一次实例化------a1 // 此时 instance = null this.name=name instance=this } var a1=new Animal("熊猫") var a2=new Animal("金丝雀") // 现在,创建出来的是同一个实例 console.log(a1===a2)//true </script>
2.观察者模式
观察者模式: 被观察者状态发生改变, 观察者会做出不同的反应
定义:定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
举例:
1. 售楼部的客服小姐姐---有新的房源---被观察者Subject
2. 直接通知给不同的潜在客户---观察者Observer
3. 不同客户做出不同的反应
观察者模式过程如下:
1. 创建一个被观察者类------销售---------发布者
2. 创建一个观察者类-------客户购房者---张三李四申五----订阅者
3. 设置状态
4. 获取状态
5. 创建销售实例
6. 创建多个用户购房者实例
7. 两个类的实例产生关系(加微信)
8.购房者接受状态改变并且说一句话"我收到了"
9.
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
前端面试题 文章被收录于专栏
前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理