设计模式之享元模式

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

UML图:

设计模式之享元模式_第1张图片

需求:

我们将创建一个Shape接口和实现了Shape接口的实体类Circle。下一步是定义工厂类ShapeFactory

ShapeFactory有一个CircleHashMap,其中键名为Circle对象的颜色。无论何时接收到请求,都会创建一个特定颜色的圆。ShapeFactory检查它的HashMap中的 circle 对象,如果找到Circle对象,则返回该对象,否则将创建一个存储在 hashmap 中以备后续使用的新对象,并把该对象返回到客户端。

FlyWeightPatternDemo,我们的演示类使用ShapeFactory来获取Shape对象。它将向ShapeFactory传递信息(red / green / blue/ black / white),以便获取它所需对象的颜色。

Shape:

设计模式之享元模式_第2张图片

Circle:

设计模式之享元模式_第3张图片

ShapeFactory:

设计模式之享元模式_第4张图片

FlyweightPatternDemo:

设计模式之享元模式_第5张图片

我们需要创建20个对象,但实际只创建了5个对象。

享元模式主要在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。

你可能感兴趣的:(设计模式之享元模式)