JavaScript享元模式与开发实践(中)

本文介绍了前端开发中设计模式的应用,特别是享元模式,强调了区分内部状态(如性别,不可变)和外部状态(如内衣,随场景变化)的重要性。通过共享对象减少重复创建,提高性能,以性别为例,仅需两个共享对象即可处理两种内部状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

作为一个前端切图仔,少有和各类设计模式打交道。但这不影响我们学习设计模式的思维,来提升我们的代码水平。

本章通过讲解享元模式,希望能够让你对设计模式更一步的学习。

本章学习内容👇

  • 内部状态与外部状态

内部状态与外部状态

享元模式有一个基本的要求:将共享对象的属性划分成内部状态外部状态

那么,什么是内部状态外部状态呢?

内部状态:顾名思义作为对象内部的固有属性,具体如下👇

  • 内部状态存储于对象内部
  • 内部状态用于对象间共享
  • 内部状态独立于具体的场景,以不改变作为原则

同样的,外部状态:作为对象外部的属性👇

  • 外部状态取决于具体使用时的场景,随着场景而进行变化
  • 外部状态不能够作为共享的属性

总的来说,我们将内部状态相同的对象都指定为一个共享的对象,而不是单独的依次创建。而它们在使用场景时所需要的“特殊”的属性,我们就通过外部状态来修改。

虽然,在每个使用场景时,我们都需要去改变共享对象的外部状态再使用。但我们可以不必再多次创建类似的对象,相比之下,这大大节约了我们的时间和内存。

了解完这俩个状态后,我们再回顾的上一章中我们讲的例子,

《 JavaScript享元模式与开发实践(上)》

其中, 我们创建了俩个共享对象

并且我们将性别作为这俩个共享对象的内部属性;在拍照也就是场景变化时,将内衣作为外部属性随着场景变化而变化。

通过这样的处理,我们大大减少了系统中对象数量。通常来讲,内部状态有几种情况,那么我们就需要创建多少个共享对象。而在这里性别只有俩种,所以我们只需要创建俩个共享对象

总结

使用享元模式的关键就在于,如何区分内部状态外部状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值