Evolve by case Singleton模式问题系统中,只需要一个实例如DBPool,Print driver,resource management重构系统代码创建了一个对象的实例,并且创建过程很复杂或者导致内存使用过多或者系统性能下降.适用性4系统用户抱怨系统的性能4系统分析指出原因一次一次的初始化某对象的实例4系统共享的对象不包含状态,或者包含可共享的状态重构优点:改进性能缺点4当对象不能共享的状态的时候,本重构就无效Singleton模式意图意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。保证一个类仅有一个实例,并提供一个访问它的全局访问点。问题问题:在系统之中在系统之中,有很多数据需要多次初始化和调用解析有很多数据需要多次初始化和调用解析解决方案解决方案:系统实现单一个实例系统实现单一个实例,不需要多次初始化不需要多次初始化适应性适应性:4当类只能有一个实例而且客户可以从一个全局的访问点访问它时当类只能有一个实例而且客户可以从一个全局的访问点访问它时4当该类通过子类可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例当该类通过子类可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例结果结果:4单例类只可有一个实例。4单例类必须自己创建自己这惟一的实例。4单例类必须给所有其他对象提供这一实例。结构结构Singleton模式-案例分析键值生成器