美文网首页js
JS设计模式-观察者模式

JS设计模式-观察者模式

作者: CRUD_科科 | 来源:发表于2019-06-10 14:38 被阅读0次
  • 观察者模式 包含发布订阅
  • 与发布订阅的区别 : 发布和订阅是没有关系的,观察者模式观察者和被观察者是有关系的,观察者可以是多个,类似订阅

现在我们有一个新需求,观察小朋友的变化,如果小朋友的状态发生了变化,我们要第一时间知道:

// 观察者模式 包含发布订阅
// 与发布订阅的区别 : 发布和订阅是没有关系的,观察者模式观察者和被观察者是有关系的,观察者可以是多个,类似订阅
class Subject {  // 被观察者
  constructor(name) {
    this.name = name;
    this.observer = [];
    this.state = '学习'
  }
  attach(o) { // 注册观察者
    this.observer.push(o);
  }
  setState(newState) {
    this.state = `${this.name}在${newState}`;
    this.observer.forEach(o => o.update(this.state));
  }
}

class Observer {  // 观察者
  constructor(name) {
    this.name = name
  }
  update(newState) {
    console.log(`观察者:${this.name};被观察者:${newState}`)
  }
}

let o1 = new Observer('老大'); // 创建观察者1
let o2 = new Observer('老2');  // 创建观察者2
let s1 = new Subject('小弟');  // 创建被观察者1
s1.attach(o1); // 注册观察者
s1.attach(o2); // 注册观察者
s1.setState('吃饭'); // 被观察者状态改变  观察者:老大;被观察者:小弟在吃饭    观察者:老2;被观察者:小弟在吃饭
s1.setState('睡觉'); // 被观察者状态改变  观察者:老大;被观察者:小弟在睡觉    观察者:老2;被观察者:小弟在睡觉

相关文章

  • js的4种设计模式及Vue小结(1)

    4种js设计模式 模块模式(module) 原型模式(prototype) 观察者模式(observer) 单例模...

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • js代码题

    js对象的深度克隆 js数组去重 js常用设计模式的实现思路,单例,工厂,代理,装饰,观察者模式等

  • RxJava基础—观察者模式

    设计模式-观察者模式 观察者模式:观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式...

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • 11.9设计模式-观察者模式-详解

    设计模式-观察者模式 观察者模式详解 观察者模式在android中的实际运用 1.观察者模式详解 2.观察者模式在...

  • 2021-11-18 - 学习记录

    观察者模式 - js

  • RxJava设计模式与原理

    标准观察者设计模式 RxJava是一种特殊的观察者模式,首先我们先来看标准的观察者设计模式。在标准观察者模式中,存...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

网友评论

    本文标题:JS设计模式-观察者模式

    本文链接:https://www.haomeiwen.com/subject/yerzxctx.html