持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
不知道大家之前有没有听说过享元模式。反正我在刚听到这个名字的时候,相比于其他的设计模式,我很难从字面上理解这个模式的意思。但是在我们学习之后会发现,这个名字取得也挺有意思的。
模式概念
首先我们可以确定,享元模式属于设计模式分类中的“结构型”设计模式。
享元模式,英文名称是:Flyweight Pattern,所以也被翻译成“蝇量模式”。
通过这个名字我们可以看出,这个模式的功能就是运用了一种共享技术,课程有效地支持大量的针对小的,细粒度的对象的操作。
其实享元模式是一个很经典的代码优化的解决方案,我们在理解了它的做法之后,会发现这是一个超级棒的模式。它的作用就是主要针对重复且缓慢的,低效的共享数据做一些操作。
同时它可以将应用中的内存占用最小化,而且通过与相关对象尽可能多的共享数据,进而来实现预期目标。
注意事项
在这里,我们有几个关于经典的享元模式的概念,需要引起我们的注意。
享元模式中有一个概念,叫做两种状态。这两种状态分为内部的和外部的。这两种状态我们后续需要多多地理解。
对于内部的信息,可以被我们对象的内部方法所需要,但是他们绝对不能没有,如果没有系统就有可能出错;相比之下,外部的信息却可以被删除,也可以被存储于外部。
这样做之后,我们就可以得到一些很好的回报:我们可以对已经被实例化的对象时刻保持着关注,这样新的副本就只能被创建。
我们在使用一个管理者来处理外在的状态的时候,关于它是被如何被实现的,可能会有一定的变化,但是有一种方法是管理对象对外部的状态:包含一个数据库的同事,享元对象属于其中。这样的实现就比较好了。
总结
在使用过程中,我们要注意查看代码的内部逻辑,代码有时候可能交错复杂,但是往往我们应用了某个设计模式之后就会变得很清晰。这样我们才会成长。