[toc]
享元模式#
当有几种对象, 可能会被经常创建,且属性变化不大,也许就几种(例如常量1-100经常用)
一种方式是调用者经常自己手动创建这些对象
还有一种是封装到一个factory中, 调用者取factory中拿。
factory中会维护一个map, 缓存这些对象,这样就不用经常创建了。所以叫享元。
和其他的区别:#
- 和原型模式的区别: 原型模式的重点在于提供clone方法去创建对象。 而享元模式不存在创建,更多是一个缓存结构(所以是结构型设计模式)
- 和工厂模式的区别: 享元模式其实类似于单例+工厂的结合。 工厂模式不一定是享元模式,因为工厂模式可能真的是创建新的。 而享元模式基本会提供类似工厂方法的get方法,给调用者使用,本质上不生成新的对象了。