java单例模式另外俩种稀有的模式

类似Spring的IOC

//类似Spring里面的方法,将类名注册,下次从里面直接获取。  
public class Singleton6 {
	private static Map<String, Singleton6> map = new HashMap<String, Singleton6>();
	static {
		Singleton6 single = new Singleton6();
		map.put(single.getClass().getName(), single);
	}

	// 保护的默认构造子
	protected Singleton6() {
	}

	// 静态工厂方法,返还此类惟一的实例
	public static Singleton6 getInstance(String name) {
		if (name == null) {
			name = Singleton6.class.getName();
		}
		if (map.get(name) == null) {
			try {
				map.put(name, (Singleton6) Class.forName(name).newInstance());
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		}
		return map.get(name);
	}
}

最安全的饿汉模式

public class TestSingleton {  
    String name = null;  
    private TestSingleton() {}  
  
    //注意这里用到了volatile关键字
    private static volatile T

猜你喜欢

转载自blog.csdn.net/u011488009/article/details/104469565