设计模式结构性:享元模式(FlyweightPattern)

2020-12-28 11:16:09 浏览数 (2)

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

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象

结构图

角色与理解

  • 享元模式共分为四种角色:
    • Flyweight(抽象享元类):通常是一个接口或者是抽象类,在抽象享元类中声明了共享享元类的公共方法,通过这些方法可以访问享元类的内部数据(内部状态),也可以设置享元类的外部数据(外部状态)
    • Concrete Flyweight(共享具体享元类):实现抽象享元类,其实例称为享元对象,一般为单例模式,提供唯一的享元对象
    • UnsharedConcrete Flyweight(非共享具体享元类):实现抽象享元类,但是不共享,通过构造函数进行实例化
    • Flyweight Factory(享元工厂类):创建并管理享元对象,以内部的键值对结构存储享元对象
  • 共享具体享元类与非共享具体享元类实现抽象享元类,能够保证他们对外具有一致的行为接口,为客户端的使用提供了便利,客户端通过享元工厂类获取共享享元对象。
  • 享元工厂类返回的享元对象都是只有内部状态的享元对象,通过客户端操作添加外部状态

核心代码

  • 抽象享元类
  • 具体享元类
  • 享元工厂类
  • 外部状态类
  • 客户端

- END -

0 人点赞