最新要闻
- 环球观点:杜绝虚标!哈趣投影率先启用中国CVIA亮度标准:成单片式LCD领头羊
- OPPO Find N2系列赢麻了!连续三个月折叠屏销量第一
- 天天速看:自动洗烘拖布 石头自清洁扫拖机器人P10图赏
- 道奇纯燃油谢幕之作!挑战者SRT恶魔170发布:V8机械增压马力超千匹
- 环球简讯:爵士力克国王将湖人挤出附加赛区 迷失盐湖城小萨准三双数据难掩低迷状态
- 入睡妙招!研究表明穿袜子睡觉更助眠
- 全球热消息:AMD Zen4霸气!移动版12核心解锁130W 直追170W桌面12核心
- "周杰伦演唱会门票"登顶微博热搜 14万张秒售罄
- 全球热推荐:今天春分白昼长了!全国春日地图出炉 看看春天到哪了
- 天天热议:汽车界“海底捞服务”!蔚来2023无忧服务发布:11600元/年
- 世界聚焦:重庆不再实行旧车置换:直接给予新车补贴 总计达3000万
- 世界报道:跨界做智能手表 比亚迪回应:消息属实 4月上新
- 对标《原神》!二次元开放世界游戏《鸣潮》开启测试招募
- 每日视点!海关总署:2月下旬以来我国出口用箱量持续增长
- 国产纯电跑车前途K50美国秽土转生:换了名称、LOGO还没变
- 全球最新:40万级领先行业两代 赵长江:腾势N7月销量将轻松破万 抢夺BBA用户
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
前端设计模式——状态模式
状态模式(State Pattern):将对象的行为和状态分离,使得对象可以根据不同的状态来改变自己的行为。在前端开发中,可以使用状态模式来管理页面的状态和响应用户的交互。
在状态模式中,对象的行为取决于其内部状态,当状态发生变化时,对象的行为也会相应地发生改变。这种模式通过将状态抽象为独立的类来实现,每个状态类都有其自己的行为和相应的方法。
(相关资料图)
在前端开发中,状态模式通常用于处理复杂的用户交互逻辑,例如根据用户的操作更改页面上的状态。以下是状态模式的一些常见应用场景:
1. 表单验证:在用户提交表单之前,可以使用状态模式来验证表单中的输入是否符合规定。1. 游戏开发:在游戏中,对象的状态可能会随着游戏的进程而发生变化。使用状态模式可以帮助开发者轻松管理和处理这些状态变化。1. 状态切换:在前端应用中,一些操作会导致页面状态的改变,例如打开或关闭侧边栏,展开或折叠列表等。使用状态模式可以帮助开发者管理这些状态变化。
总之,状态模式是一种灵活而有用的设计模式,可以使代码更加清晰和可维护,它可以帮助开发者轻松管理和处理复杂的用户交互逻辑。
以下是一个简单的状态模式示例,假设我们正在开发一个购物车页面,用户可以向购物车中添加或删除商品。购物车的状态可以是“空的”或“非空的”,当购物车为空时,用户需要被提示添加商品,当购物车非空时,用户可以查看商品列表和删除商品。
首先,我们定义一个购物车状态的抽象类:
class CartState { addToCart() {} removeFromCart() {} showMessage() {}}
接下来,我们定义购物车的两种状态:空状态和非空状态。空状态下用户需要被提示添加商品,非空状态下用户可以查看商品列表和删除商品。
class EmptyCartState extends CartState { addToCart() { console.log("Product added to cart"); // 将购物车状态设置为非空状态 this.cart.setState(new NonEmptyCartState(this.cart)); } showMessage() { console.log("Your cart is empty, please add some products."); }}class NonEmptyCartState extends CartState { removeFromCart() { console.log("Product removed from cart"); // 如果商品列表为空,则将购物车状态设置为空状态 if (this.cart.products.length === 0) { this.cart.setState(new EmptyCartState(this.cart)); } } showMessage() { console.log(`Your cart contains ${this.cart.products.length} products:`); console.log(this.cart.products.join(", ")); }}
最后,我们定义购物车类,并在购物车类中使用状态模式:
class ShoppingCart { constructor() { // 初始状态为购物车为空 this.state = new EmptyCartState(this); this.products = []; } setState(state) { this.state = state; } addToCart(product) { this.products.push(product); this.state.addToCart(); } removeFromCart(product) { const index = this.products.indexOf(product); if (index !== -1) { this.products.splice(index, 1); this.state.removeFromCart(); } } showMessage() { this.state.showMessage(); }}
在上面的代码中,我们创建了一个`ShoppingCart`类,它包含了两个主要方法`addToCart`和`removeFromCart`,这些方法将商品添加到购物车中或从购物车中删除。当这些方法被调用时,购物车的状态将会根据商品列表的状态自动更新。另外,我们还提供了一个`showMessage`方法,用于显示购物车当前的状态信息。
现在,我们可以使用这个购物车类来管理我们的购物车状态了:
const cart = new ShoppingCart();cart.showMessage(); // Your cart is empty, please add some products.cart.addToCart("apple");cart.addToCart("banana");cart.showMessage(); // Your cart contains 2 products: apple, banana.cart.removeFromCart("apple");cart.showMessage(); // Your cart contains 1 products: banana.cart.removeFromCart("banana");cart.showMessage(); // Your cart is empty, please add some products.
通过使用状态模式,我们可以轻松管理购物车的状态,并且代码更加清晰和可维护。
关键词:
-
每日讯息!关于 Vue 列表渲染 key 绑定 index 的性能问题
今天在学习React文档,列表渲染一节中提及到一个关于key绑定索引值(index)性能的问题:React官方文档...
来源: 世界今亮点!【数位DP】计数问题
前端设计模式——状态模式
每日讯息!关于 Vue 列表渲染 key 绑定 index 的性能问题
每日观察!黄金时间·千海金:避险情绪推升金价 但本周的美联储议息会议依然关键
环球观点:杜绝虚标!哈趣投影率先启用中国CVIA亮度标准:成单片式LCD领头羊
OPPO Find N2系列赢麻了!连续三个月折叠屏销量第一
天天速看:自动洗烘拖布 石头自清洁扫拖机器人P10图赏
道奇纯燃油谢幕之作!挑战者SRT恶魔170发布:V8机械增压马力超千匹
简单讲透Mac环境下多版本python的环境变量设置,仅对小白生效
视点!"error LNK2019: 无法解析的外部符号"原因分析
今头条!IDEA Rebuild项目错误:Information:java: java.lang.AssertionError: Value of x -1
对斗破苍穹进行python文本分析
实时焦点:VsCode 常用好用插件/配置+开发Vue 必装的插件
环球简讯:爵士力克国王将湖人挤出附加赛区 迷失盐湖城小萨准三双数据难掩低迷状态
入睡妙招!研究表明穿袜子睡觉更助眠
全球热消息:AMD Zen4霸气!移动版12核心解锁130W 直追170W桌面12核心
"周杰伦演唱会门票"登顶微博热搜 14万张秒售罄
dnf机械牛和悲鸣图在哪里?DNF机械牛和悲鸣的门票分别是什么?
雨过天晴一键还原怎么用?怎么删除雨过天晴一键还原?
OA对话框打不开是怎么回事?OA对话框怎么变成普通对话框?
今日最新!脚本编写的一个通用框架
天天速讯:编写高质量c#代码的20个建议
面试常考:C#用两个线程交替打印1-100的五种方法
全球新资讯:Paramiko_Linux
【全球独家】跟着字节AB工具DataTester,5步开启一个实验
英雄联盟自动关闭是什么意思?英雄联盟自动关闭怎么解决?
冒险岛的时空裂缝是什么?冒险岛怎么提升面板?
全球热推荐:今天春分白昼长了!全国春日地图出炉 看看春天到哪了
天天热议:汽车界“海底捞服务”!蔚来2023无忧服务发布:11600元/年
世界聚焦:重庆不再实行旧车置换:直接给予新车补贴 总计达3000万
世界报道:跨界做智能手表 比亚迪回应:消息属实 4月上新
对标《原神》!二次元开放世界游戏《鸣潮》开启测试招募
热点!如果设备不支持vulkan,就用swiftshader,否则就加载系统的vulkan的正确姿势(让程序能够智能的在vulkan-1.dll和libvk_s
【全球快播报】springboot使用easyExcel导出Excel表格以及LocalDateTime时间类型转换问题
《前端serverless 面向全栈的无服务器架构实战》读书笔记
每日视点!海关总署:2月下旬以来我国出口用箱量持续增长
国产纯电跑车前途K50美国秽土转生:换了名称、LOGO还没变
全球最新:40万级领先行业两代 赵长江:腾势N7月销量将轻松破万 抢夺BBA用户
【全球速看料】沙县小吃旗舰店包间最低消费300元 网友:吃的完吗?
全球头条:英国小镇被巨型老鼠入侵:像猫一样大 悬崖都要被挖塌了
OpenGL 图像 lookup 色彩调整
天天时讯:剑指 Offer 07. 重建二叉树(java解题)
为什么Redis不直接使用C语言的字符串?看完直接吊打面试官!
天天观天下!广东人睡觉时间全国最晚:“打工人”平均睡眠时长7.5小时
一根USB线就能偷走韩系车!现代、起亚已开始免费送车主方向盘锁
今日关注:再不发力就晚了!新一代奥迪Q5效果图曝光:内外大变革
当前时讯:沙尘暴黄色预警:北方超10省将迎来大范围沙尘天气
环球热点评!昔日巨头彻底退场!爱普生宣布所有相机明年终止官方服务
环球关注:论文解读TCPN
西部证券:3月20日融资买入1459.71万元,融资融券余额12.72亿元
环球速讯:中国罐头在海外多国热销:成为香饽饽
天天讯息:大反转!南京大学团队推翻美室温超导技术 复刻实验没发现超导现象
天天速看:又一致命真菌爆发:已遍布美国一半以上的州
天天微动态丨OPPO Find X6系列外观公布:拼接设计、后摄巨大
比亚迪汉唐冠军版发布会高能金句感受下 合资燃油车瑟瑟发抖
MAUI Blazor 加载本地图片的解决方案
每日热点:朴素系统优化思维的实践
焦点热文:债券通北向通2月成交规模环比增超三成 政金债跃升为最活跃券种
今日热讯:LCD荣光犹在!iQOO Z7开启预售:1599元起
全球观察:漫威后期制作总裁离职
当前通讯!2022年度个税汇算今起不用预约:多退少补你能退多少
移除雷达传感器后 特斯拉车祸数量上升:车主反映莫名刹车故障
快消息!读C#代码整洁之道笔记02_类、对象和数据结构及编写整洁函数
鲁抗医药:3月20日融资买入477.87万元,融资融券余额2.49亿元
全球速读:今年以来险企“补血”超340亿元 数百亿元补充资本“在路上”
世界观点:国际金融市场早知道:3月21日
铁矿石价格“非理性”上涨 监管层频频发声剑指价格炒作
天天最新:春分迎接春天:昼夜时间等长
2TB硬盘开车价400多 SSD便宜到没朋友:5大巨头流泪数钱
每日速递:读Java性能权威指南(第2版)笔记23_ 性能分析工具
焦点速讯:影响人类文明的“小方块” USB接口进化史
当前资讯!快来!我们发现了藏在新风空调里的“秘密”
当前速看:C++温故补缺(一):引用类型
要闻速递:【Visual Leak Detector】简介
Spotify 畅听全网高品质音乐
焦点热门:GPT-4外逃计划曝光!教授发现它正引诱人类帮助 网友:灭绝之门
天天快看点丨因禽流感爆发 阿根廷已扑杀70余万只禽类!
焦点!27款进口游戏版号获批!《赛马娘》《蔚蓝档案》等改名引热议
你相信吗?每天都有10多万人 学习流浪汉的生存技巧
环球今亮点!15年后 官方发布北京奥运福娃全新手办:五个一套440元
26种死法知乎_26种死法怎么样
天天速讯:织金县鸡场乡:防范电信诈骗,拉响反诈警报
Go 并发编程(一):协程 gorotine、channel、锁
vue和xml复习
Vue——vue2错误处理收集【七】
环球关注:iPhone开始在俄罗斯遭禁用了:不安全!苹果此前已在该国停售
焦点快看:填补空白!中国将首次开启海上二氧化碳封存
C# 探秘如何优雅的终止线程
行人车辆检测与计数系统(Python+YOLOv5深度学习模型+清新界面)
焦点播报:Spring IOC官方文档学习笔记(十四)之ApplicationContext的其他功能
如何上传一个npm包
中债金融终端上线“货币经纪行情”功能
瑞信风波由股及债 此前已有分析师提示“AT1”风险
Wii U和3DS在线游戏商店关闭前:玩家花15万328天买下所有游戏
2022年 全国坐火车的少了36.4%!高铁已达4.2万公里
环球热点!基于深度学习的口罩检测系统(Python+清新界面+数据集)
【环球新视野】自律|坚持,是因为不喜欢
Java内部类笔记整理
全球快资讯丨永磁同步电机驱动系统—相关方向思考
焦点要闻:HTTP 状态码与课程总结