23种设计模式-创建模式-单例模式(三)
引自:动力节点--23种设计模式
单例模式(Singleton)
public class Singleton {/* 持有私有静态实例,防止被引用,此处赋值为 null,目的是实现延迟加载 */private static Singleton instance = null;/* 私有构造方法,防止被实例化 */private Singleton() {}/* 静态工程方法,创建实例 */public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */public Object readResolve() {return instance;}}
public static synchronized Singleton getInstance(){if(instance==null){instance=new Singleton();}return instance;}
public static Singleton getInstance() {if (instance == null) {synchronized (instance) {if (instance == null) {instance = new Singleton();}}}return instance;}
private static class SingletonFactory {private static Singleton instance = new Singleton();}public static Singleton getInstance() {return SingletonFactory.instance;}
public class Singleton {/* 私有构造方法,防止被实例化 */private Singleton() {}/* 此处使用一个内部类来维护单例 */private static class SingletonFactory {private static Singleton instance = new Singleton();}/* 获取实例 */public static Singleton getInstance() {return SingletonFactory.instance;}/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */public Object readResolve() {return getInstance();}}
public class SingletonTest {private static SingletonTest instance = null;private SingletonTest() {}private static synchronized void syncInit() {if (instance == null) {instance = new SingletonTest();}}public static SingletonTest getInstance() {if (instance == null) {syncInit();}return instance;}}
public class SingletonTest {private static SingletonTest instance = null;private Vector properties = null;public Vector getProperties() {return properties;}private SingletonTest() {}private static synchronized void syncInit() {if (instance == null) {instance = new SingletonTest();}}public static SingletonTest getInstance() {if (instance == null) {syncInit();}return instance;}public void updateProperties() {SingletonTest shadow = new SingletonTest();properties = shadow.getProperties();}}
更多的内容请访问:https://blog.breakpoint.vip/
喜欢就在看吧!!!
