js设计模式:观察者模式

作用:

和发布订阅模式基本类似。

当某一对象状态发生变化时,所有的观察者都会收到通知。

vue响应式原理就是很经典的案例,数据发生变化,通知各个依赖。

示例:

        class TaobaoShop{
            constructor(){
                this.list = []
            }
            addSub(name,data){
              this.list.push({name,data})
            }
            pubUser(name,data){
                this.list.find(item=>item.name === name).data.awaitMsg(data)
            }
        }

        class User{
            constructor(name){
                this.name = name
            }
            awaitMsg(msg){
            console.log(`我是${this.name},商家通知我有货了,消息如下:${msg}`)
            awaitHandler(this.name)
            }
        }
        
        function awaitHandler(name){
         switch(name){
            case '王惊涛':
                console.log('可以开心的去学习react了')
                break
            case '孙悟空':
                console.log('可以开心的去学习打妖怪了')
         }

        }

        const tb = new TaobaoShop()
        const wjt = new User('王惊涛')
        const sunwukong = new User('孙悟空')
        tb.addSub('王惊涛',wjt)
        tb.addSub('孙悟空',sunwukong)
        tb.pubUser('王惊涛','王先生,您的《react从入门到精通》有货了')
        tb.pubUser('孙悟空','孙大圣,您的《72变化从入门到精通》有货了')

        //跟发布订阅模式类似
        //客户订阅淘宝的消息,就在淘宝商家处添加一个通知名单list,对象格式为{通知人:事件对象}
        //然后根据用户去通知不同的内容,用户获取通知后,可以调用awaitHandler做出自己后续想做的事
        //其实核心就是将观察者中定义的函数保存到通知者身上,在发通知的时候调用这个函数

相关推荐

  1. js设计模式--观察模式

    2024-02-18 17:34:02       31 阅读
  2. 设计模式观察模式

    2024-02-18 17:34:02       64 阅读
  3. 设计模式观察模式

    2024-02-18 17:34:02       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 17:34:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 17:34:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 17:34:02       87 阅读
  4. Python语言-面向对象

    2024-02-18 17:34:02       96 阅读

热门阅读

  1. vivado FIR Filters

    2024-02-18 17:34:02       47 阅读
  2. 小程序API能力汇总——基础容器API(二)

    2024-02-18 17:34:02       41 阅读
  3. Z4.3 求最大公约数和最小公倍数。

    2024-02-18 17:34:02       46 阅读
  4. [AIGC] Kafka 消费者的实现原理

    2024-02-18 17:34:02       50 阅读
  5. ADO世界之FIRST

    2024-02-18 17:34:02       42 阅读
  6. 面试计算机网络框架八股文十问十答第七期

    2024-02-18 17:34:02       60 阅读
  7. 单点登录和单设备登录

    2024-02-18 17:34:02       45 阅读
  8. 【Webpack】CSS 处理

    2024-02-18 17:34:02       52 阅读