5 # 观察者模式

简介: 5 # 观察者模式

观察者模式

  1. 有观察者,肯定也有被观察者
  2. 观察者需要放到被观察者中
  3. 被观察者的状态发生变化需要通知观察者
  4. 内部也是基于发布订阅模式去收集观察者

例子:比如要是实现我发了博客需通知其他小伙伴,下面实现一个简单的观察者模式:

// 被观察者
class Subject {
    constructor(name) {
        this.name = name;
        // 观察者列表
        this.observers = [];
    }
    // 添加观察者
    addObserver(o) {
        this.observers.push(o);
    }
    // 移除观察者
    removeObserver(o) {
        let index = this.observers.indexOf(o);
        if (index > -1) {
            this.observers.splice(index, 1);
        }
    }
    // 通知所有观察者
    notify() {
        this.observers.forEach((o) => o.updade(this));
    }
}
// 观察者
class Observer {
    constructor(name) {
        this.name = name;
    }
    updade(subject) {
        console.log(`【${subject.name}】发布了博客,当前【${this.name}】被通知了`);
    }
}
let subject = new Subject("凯小默");
let observer1 = new Observer("小明");
let observer2 = new Observer("小红");
subject.addObserver(observer1);
subject.addObserver(observer2);
subject.notify();
subject.removeObserver(observer1);
subject.notify();

目录
相关文章
|
网络协议
使用MPLS LDP解决BGP路由黑洞的问题
MPLS LDP默认不为BGP路由分配标签
|
SQL Java 数据库连接
Mybatis系列(一)之Mybatis入门和环境搭建
Mybatis系列(一)之Mybatis入门和环境搭建
|
SQL 存储 分布式计算
Spark Doris Connector设计方案
Spark Doris Connector 是Doris在0.12版本中推出的新功能。用户可以使用该功能,直接通过Spark对Doris中存储的数据进行读写,支持SQL、Dataframe、RDD等方式。从Doris角度看,将其数据引入Spark,可以使用Spark一系列丰富的生态产品,拓宽了产品的想象力,也使得Doris和其他数据源的联合查询成为可能。
1114 0
Spark Doris Connector设计方案
|
SQL 数据库
商城数据库表设计介绍
商城数据库表设计介绍
1932 0
商城数据库表设计介绍
|
11月前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。
|
12月前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
215 2
|
JavaScript Java 测试技术
基于Java的人事管理系统设计和实现(源码+LW+部署讲解)
基于Java的人事管理系统设计和实现(源码+LW+部署讲解)
190 7
|
12月前
|
Android开发
Android实战之如何快速实现自动轮播图
本文介绍了在 Android 中使用 `ViewPager2` 和自定义适配器实现轮播图的方法,包括添加依赖、布局配置、创建适配器及实现自动轮播等步骤。
455 0
|
Kubernetes 负载均衡 网络协议
在K8S中,Service的类型有哪些?
在K8S中,Service的类型有哪些?
|
12月前
|
SQL 数据处理 数据库
SQL语句优化与查询结果优化:提升数据库性能的实战技巧
在数据库管理和应用中,SQL语句的编写和查询结果的优化是提升数据库性能的关键环节
1093 0