1、定义
享元(Flyweight)模式的定义:运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。
2、角色划分
2.1享元接口(角色一)
是所有的具体享元类的基类,为具体享元规范需要实现的公共接口,非享元的外部状态以参数的形式通过方法传入。
2.2具体享元对象(角色二)
实现抽象享元角色中所规定的接口。
2.3享元工厂(角色三)
负责创建和管理享元角色。当客户对象请求一个享元对象时,享元工厂检査系统中是否存在符合要求的享元对象,如果存在则提供给客户;如果不存在的话,则创建一个新的享元对象。
3、UML关系图
image.png
4、优点
相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。
5、缺点
5.1、为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。
5.2、读取享元模式的外部状态会使得运行时间稍微变长。