用途

尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

要素:

  • 接口A:实体类对象的接口
  • 具体类a:接口A的具体实现类
  • 工厂类:将接口A的具体实现类缓存在字典中。客户端取用时,若缓存中有则直接取;没有则创建一个存入缓存,再返回给客户端。
  • 示例图:

享元模式.jpg

优缺点

  • 对象重用,减少内存消耗
  • 注意划分内部状态(可以共享的相同内容)和外部状态(客户端调用时的定制化内容)