Skip to content

Latest commit

 

History

History
21 lines (14 loc) · 1.05 KB

享元模式.md

File metadata and controls

21 lines (14 loc) · 1.05 KB

享元模式

采用一个共享来避免大量拥有相同内容对象的开销。使用享元模式可有效支持大量的细粒度对象

使用场景

  • 系统中存在大量的相似对象
  • 细粒度的对象都具备较接近的外部状态,而且内部状态与环境不关,也就是说对象没有特定身份
  • 需要缓冲池的场景

内部状态与外部状态:在享元对象内部并且不会随着环境改变而改变的共享部分,可以称之为享元对象的内部状态,反之随着环境改变而改变的,不可共享的状态称之为外部状态

UML类图

简单实现

过年买火车票的时候,我们需要查询车票的情况,那么如果每次查询车票时都创建一个结果,那么必然会大量的创建出许多重复的对象,频繁的去销毁他们,使得GC任务繁重。那么这时我们可以使用享元模式,将这些对象缓存起来,查询时优先使用缓存,没有缓存在重新创建

源码中的实现

Message 使用Message推荐obtain(),不要去new了

优缺点