确保一个类只有一个例子,并提供一个访问它的全球访问点。
解决方案:频繁创建和销毁全局使用的类别。
关键代码:构造函数是私有的。
饿汉风格:类加载初始化,浪费内存。
Mainpublic class SingletonPatternDemo { public static void main(String[] args) { ////非法构造函数 ///编译错误:构造函数 SingleObject() 是不可见的 //SingleObject object = new SingleObject(); ////获得唯一可用的对象 SingleObject object = SingleObject.getInstance(); }}
懒汉模式,线程不安全public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
懒汉风格,线程安全public class Singleton { private static Singleton instance; private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
饿汉式,线程安全public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } }