0%

享元模式

[toc]

享元模式#

当有几种对象, 可能会被经常创建,且属性变化不大,也许就几种(例如常量1-100经常用)

一种方式是调用者经常自己手动创建这些对象

还有一种是封装到一个factory中, 调用者取factory中拿。

factory中会维护一个map, 缓存这些对象,这样就不用经常创建了。所以叫享元。
fbcb7c5c2bb6242e758efb7b42bfcf7bb57b731e


和其他的区别:#

  • 和原型模式的区别: 原型模式的重点在于提供clone方法去创建对象。 而享元模式不存在创建,更多是一个缓存结构(所以是结构型设计模式)
  • 和工厂模式的区别: 享元模式其实类似于单例+工厂的结合。 工厂模式不一定是享元模式,因为工厂模式可能真的是创建新的。 而享元模式基本会提供类似工厂方法的get方法,给调用者使用,本质上不生成新的对象了。