设计模式之观察者模式(5)

简介: 设计模式之观察者模式(5)

1、装饰器模式 ?

1、介绍

  • 装饰器内 会先取得之前的功能 再添加功能

网络异常,图片无法展示
|

  • 使用时需要将 原来的实例 传入 装饰器中

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 动手试试

网络异常,图片无法展示
|

  • 写代码 理解一下
class Circle {
      draw() {
        console.log("画一个五角星");
      }
    }
    class Decorator {
      constructor(circle) {
        this.circle = circle;
      }
      draw() {
        this.circle.draw(); // 原来的功能
        this.setRedBoard(circle); // 新增的装饰器功能
      }
      setRedBoard(circle) {
        console.log("画一个三角形");
      }
    }
    // 测试代码
    // 先看自身功能
    let circle = new Circle();
    circle.draw();
    console.log("---分割线---");
    //装饰器功能
    let dec = new Decorator(circle);
    dec.draw();
复制代码
  • 实现效果

网络异常,图片无法展示
|

2、使用场景展示

  • 装饰器 使用 场景 展示

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 安装插件
yarn add babel-plugin-transform-decorators-legacy --save-dev 
复制代码

网络异常,图片无法展示
|

  • 尝试 写 es7 装饰器

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 理解一下 原理

网络异常,图片无法展示
|

  • 还可 传递 参数

网络异常,图片无法展示
|

  • 还可 使用 mixin

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3、装饰器 方法

1、readonly

网络异常,图片无法展示
|

  • 代码展示

网络异常,图片无法展示
|

2、打印 日志

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3、core-decorator  第三方库 比较好用

网络异常,图片无法展示
|

  • 安装 yarn add core-decorators --save

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 设计原则

网络异常,图片无法展示
|

2、外观模式 ?

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3、观察者模式(重点 ) ?

1、介绍

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

2、代码展示

// 观察者模式
//  主题  保存状态 当状态 变化后 通知 观察者 对象
class Subject {
  constructor() {
    this.state = 0;
    this.observers = [];
  }
  getState() {
    return this.state;
  }
  setState(state) {
    this.state = state;
    this.notifyAllObservers();
  }
  notifyAllObservers() {
    this.observers.forEach((observer) => {
      observer.update();
    });
  }
  attach(observer) {
    this.observers.push(observer);
  }
}
// 观察者
class Observer {
  constructor(name, subject) {
    this.name = name;
    this.subject = subject;
    this.subject.attach(this); //  将自己 作为观察者 传入 主题中
  }
  update() {
    console.log(`${this.name} update, state: ${this.subject.getState()}`);
  }
}
// 测试
let s = new Subject();
let o1 = new Observer("o1", s);
let o2 = new Observer("o2", s);
let o3 = new Observer("o3", s);
s.setState(1);
复制代码
  • 结果展示
  • 主题的setState使得 state更改时,通知观察者 状态 已经更新

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3、重要的 使用 场景

网络异常,图片无法展示
|

  • 网页 事件绑定
    网络异常,图片无法展示
    |

  • Promise

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • jQuery callbacks

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • nodejs自定义事件

1、自定义事件

网络异常,图片无法展示
|

2、 还有一个 继承

网络异常,图片无法展示
|

网络异常,图片无法展示
|

3、读取大文件时 使用的文件流

网络异常,图片无法展示
|

4、读取文件有多少行

网络异常,图片无法展示
|

  • 我们去检查一下 文件 看对不对

网络异常,图片无法展示
|

4、其他 场景

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

5、 设计原则验证

网络异常,图片无法展示
|



相关文章
|
19天前
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
|
1月前
|
设计模式 传感器
【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)
【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)
40 0
|
15天前
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
25 3
|
27天前
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
34 9
|
26天前
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
29 2
|
1月前
|
设计模式 监控 UED
设计模式之观察者模式
【10月更文挑战第12天】 观察者模式是一种行为型设计模式,定义了一对多的依赖关系,当一个对象状态改变时,所有依赖它的对象都会自动更新。主要由主题(被观察者)和观察者组成,实现对象间的松耦合,广泛应用于用户界面、事件驱动系统和数据监控等领域。
|
1月前
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
本教程详细讲解Kotlin语法,适合深入学习。对于快速掌握Kotlin,推荐“简洁”系列教程。本文特别介绍了观察者模式,包括使用Java API和Kotlin委托属性(如Delegates.observable)实现的方法,旨在帮助开发者更高效地实现和优化观察者模式的应用。
34 3
|
2月前
|
设计模式 Java 关系型数据库
设计模式——观察者模式
观察者模式介绍、观察者模式优化天气预报案例、JDK 的Observable类和Observer类
设计模式——观察者模式
|
1月前
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
32 0
|
3月前
|
设计模式 存储 前端开发
【十四】设计模式~~~行为型模式~~~观察者模式(Java)
文章详细介绍了观察者模式(Observer Pattern),这是一种对象行为型模式,用于建立对象之间的一对多依赖关系。当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。文中通过交通信号灯与汽车的案例以及多人联机对战游戏的设计方案,阐述了观察者模式的动机和应用场景。接着,文章介绍了观察者模式的结构、角色、优点、缺点以及适用情况,并通过代码示例展示了如何在Java中实现观察者模式。此外,还探讨了观察者模式在MVC架构中的应用以及Java中对观察者模式的支持。
【十四】设计模式~~~行为型模式~~~观察者模式(Java)

热门文章

最新文章

  • 1
    C++一分钟之-设计模式:工厂模式与抽象工厂
    43
  • 2
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    48
  • 3
    C++一分钟之-C++中的设计模式:单例模式
    58
  • 4
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    38
  • 5
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    63
  • 6
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    58
  • 7
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    42
  • 8
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    50
  • 9
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    110
  • 10
    Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
    78
  • 下一篇
    无影云桌面