JavaScript设计模式样例十二 —— 享元模式
享元模式(Flyweight Pattern)
定义:减少创建对象的数量,以减少内存占用和提高性能。
目的:用共享技术有效地支持大量细粒度的对象。
场景:系统中有大量对象。
// 构建享元对象 class Modal { constructor (id, gender) { this.gender = gender this.name = `${gender}${id}` } } // 构建享元工厂 class ModalFactory { // 单例模式 static create (id, gender) { if (this[gender]) { return this[gender] } return this[gender] = new Modal(id, gender) } } // 管理外部状态 class TakeClothersManager { // 添加衣服款式 static addClothes (id, gender, clothes) { const modal = ModalFactory.create(id, gender) this[id] = { clothes, modal } } // 拍照 static takePhoto (id) { const obj = this[id] console.log(`${obj.modal.gender}模${obj.modal.name}穿${obj.clothes}拍了照`) } } for (let i = 0; i < 10; i++) { TakeClothersManager.addClothes(i, '男', `服装${i}`) TakeClothersManager.takePhoto(i) } for (let i = 10; i < 20; i++) { TakeClothersManager.addClothes(i, '女', `服装${i}`) TakeClothersManager.takePhoto(i) }
分类:
JavaScript
, 设计模式
标签:
设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义