对象池模式、多例模式、享元模式的比较
这三个模式都会对实例对象进行维护、复用。但就设计目的而言:
- 多例模式: 就如单例一样,纯粹是为了控制实例数量,使用这种模式的类,通常是作为程序某个模块的入口。
- 享元模式: 是结构型模式。这意味着,它的侧重点是对象之间的衔接。它把动态的、会变化的状态剥离,外部化,共享不变的东西。但是这部分外部化的东西和享元模式内部共享的不会变的东西之间存在关联。所以享元对外提供的接口常常会包含一个String类型的参数,表示key、名称之类。
享元和对象池的设计目的相近,主要是为了节省系统资源,它们维护和共享的通常是某种资源。
- 对象池: 是构造型模式,侧重于提供对象实例。对调用者而言对象池提供的对象都没有区别,这个可以用,那个也可以用。