简单粗暴,快速学习观察者模式,订阅者模式。

  // Es5 
  function Serve() {
    this.obList = [];
  }
  Serve.prototype = {
    addServe(o) {
      console.log(o.name + '订阅了')
      this.obList.push(o);
    },
    removeServe(o) {
      for (var i = 0; i < this.obList.length; i++) {
        if (this.obList[i] === o) {
          console.log(o.name + '取消订阅')
          this.obList.splice(i, 1)
          break;
        }
      }
    },
    notifyServe(msg) {
      for (var i = 0; i < this.obList.length; i++) {
        const ob = this.obList[i];
        console.log('通知订阅者' + ob.name)
        ob.update(msg)
      }
    }
  }

  function ObUser(name) {
    this.name = name;
  }
  ObUser.prototype = {
    update(msg) {
      console.log('收到通知,并更新')
      this.message(msg)
    },
    message(msg) {
      console.log(this.name + '========接收=======' + msg)
    }
  }

  const serve = new Serve();
  const user01 = new ObUser('张三');
  const user02 = new ObUser('李四');
  const user03 = new ObUser('王五');
  // 添加订阅
  serve.addServe(user01)
  serve.addServe(user02)
  serve.addServe(user03)
  // 发布消息
  serve.notifyServe('拼夕夕全场9.9包邮,购物有礼,返卷返红包,数量有限,快来抢购吧')
  // 取消订阅
  console.log('李四在拼夕夕买了一把锁,发现买回来没要钥匙,感觉自己的多年教育受到了奇耻大辱。于是')
  serve.removeServe(user02)
  // 再次发布消息
  serve.notifyServe('拼夕夕,最低价只需要0.01元,还包邮,闻所未闻的优惠,先到先到哦')
  // 全部取消
  console.log('张三受不了,这样的诱惑信息,进去买了一把伞,收到货后,于是')
  serve.removeServe(user01)
  console.log('王五家里有点钱,买东西都要买贵的,不贵的不要,越贵他越兴奋,上次买个膜,花了18.8万,他很遗憾的离开了。于是')
  serve.removeServe(user03)
  // 再次发布消息 + 无奈他们再也接收不到这个通知了
  serve.notifyServe('于是拼夕夕倒闭了,这条订阅消息再也无人能够接收。')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值