享元模式

享元模式:采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、直观的就是内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象。

享元模式


Flyweigtht

抽象享元角色(Flyweigtht):为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入。


ConcreteFlywight

具体享元角色(ConcreteFlywight):实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供存储空间。


UnsharedConcreteFlywight

复合享元角色(UnsharedConcreteFlywight):它所代表的对象是不可以共享的,并且可以分解成为多个单纯享元对象的组合。



FlyweigthtFactory

享元工厂角色(FlyweigthtFactory):负责创建和管理享元角色。要想达到共享的目的,这个角色的实现是关键。


享元模式的优缺点:享元模式的优点在于它大幅度地降低内存中对象的数量。但是,它做到这一点所付出的代价也是很高的:

1、享元模式使得系统更加复杂。为了使对象可以共享,需要将一些状态外部化,这使得程序的逻辑复杂化。

2、享元模式将享元对象的状态外部化,而读取外部状态使得运行时间稍微变长。


享元模式的使用场景:1、当我们发现某个类型的对象有大量的实例时,我们是否可以对这些实例进行分类,经过分类后,我们发现只有很少的类别的情况下。

2、我们发现通过使用享元模式后能够提高系统的性能和不会带来更多的复杂度时。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容