结合单例、工厂模式。

剥离外部状态,并把外部状态保存在其它地方,在合适的时刻再把外部状态组装进共享对象。

适用于:

  • 使用大量相似对象
  • 造成内存开销
  • 对象的大多数状态为外部状态
  • 剥离出对象的外部状态之后,可以用相对较少的共享对象取代大量对象。

    内部状态与外部状态

    第12章 享元模式 - 图1

    没有内部状态的享元(上传的文件类型不是多种)

  • 网盘极速上传(控件)

  • 网盘普通上传(Flash)

    对象池

    后端:HTTP连接池、数据库连接池

    Web前端:DOM操作

    地图上的小气泡

    1. class toolTipFactory {
    2. toolTipPool = [];
    3. create() {
    4. // 新建并放入pool
    5. // 或从pool取
    6. }
    7. recover() {
    8. // 回收到pool
    9. }
    10. }