当前位置: 首页 > news >正文

两个简单的设计模式的例子

观察者模式

观察者模式:

  • 定义对象间的一对多依赖关系,当一个对象(被观察者/主题)的状态发生变化时,所有依赖于它的对象(观察者)都会自动收到通知并更新。
  • 特点:一个主题可以广播消息给多个监听者,适用于事件处理系统、消息订阅等场景。
  • 类似于订阅发布,

利用观察者模式实现整个页面始终只有一个视频正在播放。在不改动其他组件的时候,直接修改video组件。
在这里插入图片描述

observe:

 // 观察者
export const observe = {inPlay: null,playVideo(videoRef) {//暂停之前的videoif (this.inPlay) {this.inPlay.pause();}// 播放新的videovideoRef.value.play();this.inPlay = videoRef.value;},pauseVideo() {if (this.inPlay) {this.inPlay.pause();}this.inPlay = null;},
};

video:

<script setup>
import { ref } from "vue";
import { observe } from "./0bserver.js";
const videoRf = ref(null);
// 在管理者中使用,调用观察者进行播放和暂停
const play = () => {observe.playVideo(videoRf);
};const pause = () => {observe.pauseVideo();
};
</script><template><div><videosrc="./111773_web.mp4"style="width: 100px; height: 100px"ref="videoRf"></video><button @click="play">播放</button><button @click="pause">暂停</button></div>
</template>

在这里插入图片描述

单例模式例子

项目在浏览器端使用request,在app端使用requestApp,
要根据不同的场景使用不同的请求

使用单例模式处理单例模式:

//判断环境的方法
const isApp =()=>{return 'xxx'
}
---------------------
import requestH5 from ""
import requestApp from ""
// 暴露一个标记,通过标记来储存已经实例化的对象
//单例模式保证,某一类只被创建一次
let requestFn = null
export  const request =()=>{
if(!requestFn){// 第一次发请求,要判断登入的环境if(isApp){requestFn = requestApp}else{requestFn = requestHe}requestFn()
}
http://www.dtcms.com/a/335089.html

相关文章:

  • FP16(半精度)和FP32(单精度)
  • CentOS7安装使用FTP服务
  • 产品设计.原型设计
  • TexStudio中的Latex,PDFLatex,XeLatex和LuaLatex的区别
  • vue优化有哪些手段?
  • ubuntu网络共享
  • 深度解析和鲸社区热门项目:电商双 11 美妆数据分析的细节与价值
  • ubuntu远程桌面很卡怎么解决?
  • [Linux] Linux系统负载监控 Linux服务管理
  • Java Stream sort算子实现:SortedOps
  • 网络层(1)
  • DeepResearch开源与闭源方案对比
  • autofit.js: 自动调整HTML元素大小的JavaScript库
  • 小智-ESP32的MQTT协议
  • linux设备驱动之字符设备驱动
  • Python-Pandas基础
  • 主从复制+哨兵
  • 移动互联网发展战略
  • Altium Designer 22使用笔记(7)---网表导入,叠层设置
  • Spring框架(IOC)
  • 程序设计|C语言教学——C语言基础4:进阶
  • TOGAF八步一法笔记2
  • day42_2025-08-16
  • TDengine 3.3.7.0 版新功能(BLOB 数据类型)
  • ZYNQ QSPI控制器说明
  • JIT 编译与解释执行机制:Java 性能加速的幕后引擎
  • Linux软件编程-线程(2)
  • Python训练营打卡 DAY 38 Dataset和Dataloader类
  • 《代码重生:杨蓉与62.webp》
  • PowerShell中搜索文件夹