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

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

观察者模式

观察者模式:

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

利用观察者模式实现整个页面始终只有一个视频正在播放。在不改动其他组件的时候,直接修改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.xdnf.cn/news/18044.html

相关文章:

  • 【轨物方案】预防性运维:轨物科技用AI+机器人重塑光伏电站价值链
  • JavaScript 核心语法与实战笔记:从基础到面试高频题
  • NLP:Transformer模型构建
  • 驱动开发系列63 - 配置 nvidia 的 open-gpu-kernel-modules 调试环境
  • ES操作手册
  • 在本地部署Qwen大语言模型全过程总结
  • Linux -- 线程概念与控制
  • 【DDIA】第三部分:衍生数据
  • AI优质信息源汇总:含X账号,Newsletter,播客,App
  • python中的reduce函数
  • 2025戴尔科技峰会:破局者的力量与智慧
  • [ CSS 前端 ] 网页内容的修饰
  • 低资源语言翻译:数据增强与跨语言迁移学习策略
  • 蛋白质设计新高度,RFdiffusion 实现从零设计高亲和力蛋白质
  • Redis核心应用场景及代码案例
  • wordpress忘记密码怎么办
  • kubernetes(4) 微服务
  • [激光原理与应用-285]:理论 - 波动光学 - 无线电磁波的频谱分配
  • 【嵌入式C语言】五
  • ESP32-C3_SMARTCAR
  • AI客户维护高效解决方案
  • Matlab利用系统辨识工具箱辨识自带数据集的控制系统参数(传递函数篇)
  • 【web自动化】-8-EXCEL数据驱动
  • Web攻防-大模型应用LLM搭建接入第三方内容喂养AI插件安全WiKI库技术赋能
  • (自用)console.log怎么上色
  • Linux————网络基础
  • Kafka生产者原理深度解析
  • 晶振电路的负载电容、电阻参数设计
  • 力扣 hot100 Day74
  • 读《精益数据分析》:黏性(Stickiness)—— 验证解决方案是否留住用户