-
定义与优缺点
-
使用场景
-
结构组成和uml图
-
具体实例实现
-
常见面试题
定义:享元模式是为数不多的,只为提升系统性能而生的设计模式。主要作用就是复用大对象(重量级对象),以节省内存空间和对象创建时间 。
享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。
其主要缺点是:
-
为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。
-
读取享元模式的外部状态会使得运行时间稍微变长。
使用场景:String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。
结构组成:
享元模式主要有三个角色:
Flyweight:抽象享元角色。
ConcreteFlyweight:具体享元。
FlyweightFactory:享元工厂。享元工厂内部维护了一个对象池,每次获取对象都先从池中获取,获取不到再创建,并将对象保存在在池中。
享元对象的信息可以分为两种状态,内部状态:内部状态是可以共享的部分,它不会随外界环境的变化而变化,内部状态一般都作为对象池的key,而值就是享元对象本身。外部状态:会随着外界环境改变而改变的部分,它不被共享。
uml设计图:
享元模式实例:
常见面试题:
暂无