-
特点:Flyweight释义有轻量级、享元等。享元这个词对我而言很难理解,却又不明觉厉。
享元模式一句话总结就是通过尽量共享实例来避免new出实例。这句话的精髓就是共享,共享什么呢?共享已存在的实例,实现资源重复利用。比如Java语言,在用new创建一个实例时是相对较重的程序操作,可是前面讲过原型模式可以解决这个问题,为什么不用呢?因为原型模式只能解决部分时间问题,而且不能解决空间问题,享元模式既能节省时间又能减少内存浪费。
简单说就是实例作为资源个体单元被共享,这个时候再回头看享元这个词,似乎就很好理解了,享就是共享,元就是被共享的资源个体单元。 - 角色:
角色名称 | 角色职责 |
---|---|
Flyweight(轻量级) | 定义被共享的类,类中的数据信息可分为两种:Intrinsic(本质的、固有的)信息:不依赖于位置与状况,可以共享;Extrinsic(外在的、非本质的)信息:依赖于位置与状况,不能共享。 |
FlyweightFactory(轻量级工厂) | 生产Flyweight角色的工厂,同时管理着被生产的Flyweight对象池 |
Client(请求者) | 通过FlyweightFactory获取Flyweight组装数据 |
-
角色关系:
代码示例:Flyweight
以上文献参考:《图解设计模式》