携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情
前言
作为一个前端切图仔,少有和各类设计模式打交道。但这不影响我们学习设计模式的思维,来提升我们的代码水平。
本章通过讲解享元模式,希望能够让你对设计模式更一步的学习。
本章学习内容👇
- 内部状态与外部状态
内部状态与外部状态
享元模式有一个基本的要求:将共享对象的属性划分成内部状态与外部状态。
那么,什么是
内部状态与外部状态呢?
内部状态:顾名思义作为对象内部的固有属性,具体如下👇
内部状态存储于对象内部内部状态用于对象间共享内部状态独立于具体的场景,以不改变作为原则
同样的,外部状态:作为对象外部的属性👇
外部状态取决于具体使用时的场景,随着场景而进行变化外部状态不能够作为共享的属性
总的来说,我们将内部状态相同的对象都指定为一个共享的对象,而不是单独的依次创建。而它们在使用场景时所需要的“特殊”的属性,我们就通过外部状态来修改。
虽然,在每个使用场景时,我们都需要去改变共享对象的外部状态再使用。但我们可以不必再多次创建类似的对象,相比之下,这大大节约了我们的时间和内存。
了解完这俩个状态后,我们再回顾的上一章中我们讲的例子,
其中, 我们创建了俩个共享对象。
并且我们将性别作为这俩个共享对象的内部属性;在拍照也就是场景变化时,将内衣作为外部属性随着场景变化而变化。
通过这样的处理,我们大大减少了系统中的对象数量。通常来讲,内部状态有几种情况,那么我们就需要创建多少个共享对象。而在这里性别只有俩种,所以我们只需要创建俩个共享对象。
总结
使用享元模式的关键就在于,如何区分内部状态和外部状态。