码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式~享元模式

时间:2020-09-03 16:34:19      阅读:39      评论:0      收藏:0      [点我收藏+]

标签:crete   角色   color   区分   info   环境   一个   weight   flyweight   

享元模式是对象的结构模式。

享元模式以共享的方式高效的支持大量的细粒度对象。

享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External)。

一个内蕴状态是存储在享元对象内部的,并且是不会随环境改变而有所不同的。因此,一个享元可以具有内蕴状态并可以共享。

一个外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入享元对象内部。

外蕴状态不可以影响享元对象的内蕴状态。也就是说,它们是相互独立的。

享元模式的种类

  • 单纯享元模式
  • 复合享元模式

单纯享元模式

技术图片

 

 角色如下:

  • 抽象享元角色此角色是所有具体享元类的超类,为这些类规定出需要实现的公共接口。
  • 具体享元角色(ConcreteFlyweight): 实现抽象享元角色所规定的接口。如果有内蕴状态的话,必须负责为内蕴状态提供存储空间。享元对象的内蕴状态必须于对象所处的周围环境无关,从而使得享元对象可以在系统内共享。
  • 享元工厂角色(FlyweightFactory): 本角色负责创建和管理享元角色。本角色必须保证享元对象可以被系统适当的共享。
  • 客户端角色本角色需要维护一个对所有享元对象的引用。本角色需要自行 存储所有享元对象的外蕴状态。

示意源码

 

设计模式~享元模式

标签:crete   角色   color   区分   info   环境   一个   weight   flyweight   

原文地址:https://www.cnblogs.com/Vincent-yuan/p/13551050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!