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%内容,订阅专栏后可继续查看/也可单篇购买

前端面试题 文章被收录于专栏

前端面试的一些常问问题、问题的具体实现(可直接运行)以及底层原理

全部评论
看完狠狠悟了
1 回复 分享
发布于 2023-02-19 11:03 云南
多谢分享 收藏一波
1 回复 分享
发布于 2023-02-19 11:45 四川

相关推荐

不愿透露姓名的神秘牛友
10-30 15:57
点赞 评论 收藏
分享
10-22 09:40
已编辑
蚌埠坦克学院 Java
风格和精通:没收到 寄
投递中国农业发展银行等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务