定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
public class Singleton{
private static final Singleton singleton=new Singleton();
private Singleton(){}
public static Singleton getSingleton() {
return singleton;
}
}
优点:减少内存开支;减少系统的性能开销;避免对资源的多重占用;优化和共享资源访问。
缺点:扩展困难;对测试不利;与单一职责原则冲突。
使用场景:要求生成唯一序列号;在整个项目中需要一个共享访问点或共享数据;创建一个对象需要消耗的资源过多;需要定义大量的静态变量或静态方法。