标签(空格分隔):享元模式 内部状态 外部状态
享元模式: 运用共享的技术有效地支持大量细粒度的对象
享元模式就像它的名称一样,将一个元素(对象),提供可以共享的方法,减少系统内存开销,降低对象创建与销毁的时间成本。
享元模式主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。
优点:减少对象的创建和销毁的开销,降低系统的内存,防止由于大量对象的创建导致的内存溢出问题,提成运行效率,增加程序的鲁棒性。
在介绍单例模式的时候,提到过一种单例模式的扩展,多例模式。多例模式可以提供有限个自己的实例被其他程序使用,这些实例的创建和管理都由多例类来控制。这个时候当多例类的实例被其他多个业务实体类共享和使用,这就实现了我们这里说的享元模式。
所以,享元模式可以看作是工厂类(多例模式中的多例类,自己创建并管理实例),单例模式(多例模式中的一个实例),以及组合模式(业务类需要持有实例来进行业务)三种模式组成的
享元模式常见于各种数据库连接池、线程池等相关组件中。其中的数据库链接/线程池中的线程都是常用的,可被共享的对象,这个时候创建一个共享池来管理这些公用可被共享的对象就是相当有必要的,有效降低链接/线程的创建和销毁开销,提高系统性能。