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