单例模式就是在一个java应用程序中,一个class类只有一个实例。
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
我们知道JVM的内存资源是很宝贵的,尤其是在程序很庞大的时候,尽量减少创建不必要的对象是能够很大程度的减少内存的开销。单例模式的好处就是能够节省内存,限制了实例对象的创建。
在一个应用程序中的共享资源可以考虑使用单例模式,比如日志、配置、数据连接池、线程池等;熟悉servlet的童鞋一定知道,servlet组件也是单例模式的,因为频繁的创建servlet线程会消耗大量资源,影响系统性能,这也是单例模式的好处体现。
//单例模式-懒汉式
public class Singleton {
private static Singleton singleton = null;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (singleton==null) {
singleton = new Singleton();
}
return singleton;
}
}
//单例模式-恶汉式
public class Singleton2 {
private static Singleton2 singleton2 = new Singleton2();
private Singleton2() {}
public static Singleton2 getInstance() {
return singleton2;
}
}