您现在的位置是:首页 > 正文

设计模式学习笔记(五) - 观察者模式 Observer

2024-04-01 00:59:49阅读 4

目录

观察者模式 Observer

一、背景描述

Version 1 (面向过程)

Version 2 (面向对象)

Version 3 (单个观察者)

Version 4 (多个观察者)

Version 5 (分离观察者与被观察者)

二、不同事件下的观察者模式

三、事件本身也可以形成继承体系

四、观察者常用场景


观察者模式 Observer

一、背景描述

小孩哭了就喂

Version 1 (面向过程)

Version 2 (面向对象)

Version 3 (单个观察者)

耦合度很高

Version 4 (多个观察者)

依旧耦合度很高,可以有多个观察者,且每个观察者的处理方式不同

Version 5 (分离观察者与被观察者)

定义Observer接口,分离观察者与被观察者


二、不同事件下的观察者模式

同一个事件在不同的类似时间地点条件下需做出不同的Action


 

三、事件本身也可以形成继承体系


四、观察者常用场景

  • Listener
  • Hook
  • Callback

 

 

 

 

 

 

 

 

网站文章

  • 编程必备基础知识|计算机组成原理篇(02):计算机的分类

    编程必备基础知识|计算机组成原理篇(02):计算机的分类

    计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基...

    2024-04-01 00:59:24
  • 命令文件

    vim 设置 在 /etc/vimrc文件中任意行加入命令,可以修改vim打开后的状态,比如显示行号,加下划线等功能。 用户管理 /etc/passwd中显示 1.帐号名称 2.密码 3.uid,4....

    2024-04-01 00:59:17
  • Python调用C++ DLL库 ------OSError: [WinError 126] 找不到指定的模块。

    Python调用C++ DLL库 ------OSError: [WinError 126] 找不到指定的模块。

    Python调用C++ DLL库 解决Python中 OSError: [WinError 126] 找不到指定的模块 的问题。 一、问题:   在进行Python开发的过程中,很可能遇到调用C++ ...

    2024-04-01 00:59:09
  • ASP .net core之Memory usage

    ASP .net core之Memory usage

    Asp .net core内存管理机制注意:在垃圾回收触发时,除了触发垃圾回收的线程外所有的其他线程都会挂起状态分类:主要分为server GC和workstation GCServer GC:默认值...

    2024-04-01 00:59:03
  • mysql 表名 参数化_我可以在准备好的语句中参数化表名吗?

    我已经多次使用mysqli_stmt_bind_param函数。但是,如果我分开试图防止SQL注入的变量,则会遇到错误。这是一些代码示例:function insertRow( $db, $mysql...

    2024-04-01 00:58:38
  • CentOS8 按照 MySQL5.7———错误:没有任何匹配: mysql-community-server

    CentOS8 按照 MySQL5.7———错误:没有任何匹配: mysql-community-server

    问题 [dzl@localhost ~]$ sudo yum -y install mysql-community-server 上次元数据过期检查:0:32:16 前,执行于 2022年03月12日...

    2024-04-01 00:58:30
  • 抽象类和接口

    Java基础,抽象类和接口

    2024-04-01 00:58:24
  • 一本比较简单易懂的中文python入门教程

    http://woodpecker.org.cn/abyteofpython_cn/chinese/index.html转载于:https://www.cnblogs.com/ericsun/archive/2012/02/24/2366984.html

    2024-04-01 00:57:55
  • 关于一级指针、二级指针总结

    1.一级指针存放的是变量的地址。传参使用的话可以改变指向变量的值但是无法改变指针的指向(因为形参只是复制一个相同的指针进行操作,相当于一级指针是无法当做形参传进另一个函数)。 2.二级指针存放的是一级指针的地址。传参使用的时候传进去的是一级指针的地址,可以在另一个函数可以改变原一级指针的指向也可以改变一级指针指向的变量! .........

    2024-04-01 00:57:49
  • 服务器本地视频播放的网站,javascript-如何显示带有本地字幕的本地视频(不带网络服务器)...

    我正在寻找一种跨浏览器视频解决方案,该解决方案能够使用带有本地字幕(.srt文件)的本地HTML文件显示本地视频.我尝试了不同的播放器(VideoJS,jwPlayer,带有jquery.srt的HT...

    2024-04-01 00:57:21