一、定义与结构
享元模式(Flyweight Pattern),通过共享技术来实现大量细粒度的对象的复用。在系统中只需要持有少量的对象就可以实现对象的多次复用。享元模式有两种状态,分别是内部状态和外部状态,内部状态在享元对象内部,是可以共享的不变的状态,而外部状态是不可共享的,由具体的应用场景来传入相应的外部状态,享元模式通常和工厂模式一起使用。
享元模式主要有如下的几个模块:
Flyweight:抽象享元对象,为具体的享元对象定义了接口方法,外部对象通过该接口以参数的形式传入,抽象享元对象可以是接口或者抽象类。
FlyweightFactory:享元工厂,主要负责创建和管理享元角色,并提供获取享元对象的接口方法。
ConcreteFlyweight:具体的享元对象,是抽象享元对象的具体实现。
UnsharedConcreteFlyweight:非共享具体享元对象,并非所有享元对象都是可共享的,可以通过非共享享元类来创建非共享享元对象。