zoukankan      html  css  js  c++  java
  • 单例模式典型创建方法(三种)

    单线程

     
    class Singleton {
    	
    	private Singleton() {};
    	private static Singleton instance = null;
    	
    	public static Singleton createInstance() {
    		if (instance == null) {
    			instance = new Singleton();
    		}
    		return instance;
    	}
    	
    }
     
    public class HelloWorldjava {
    
    	public static void main(String[] args) {
    		Singleton s1 = Singleton.createInstance();
    		Singleton s2 = Singleton.createInstance();
    		
    		if (s1 == s2) {
    			System.out.println("只有一个实例被创建!");
    		}
    	}
    }
    
     

    预先加载

    class Singleton {
    	
    	private Singleton() {};
    	private static Singleton instance = new Singleton();
    	
    	public static Singleton createInstance() {
    		return instance;
    	}
    	
    }
    
    
    public class HelloWorldjava {
    
    	public static void main(String[] args) {
    		Singleton s1 = Singleton.createInstance();
    		Singleton s2 = Singleton.createInstance();
    		
    		if (s1 == s2) {
    			System.out.println("只有一个实例被创建!");
    		}
    	}
    }
    

    按需创建

    class Singleton {
    	
    	private Singleton() {};
    	
    	private static class Helper {
    		static Singleton instance = new Singleton(); 
    	}
    	
    	public static Singleton createInstance() {
    		return Helper.instance;
    	}
    	
    }
    
    public class HelloWorldjava {
    
    	public static void main(String[] args) {
    		Singleton s1 = Singleton.createInstance();
    		Singleton s2 = Singleton.createInstance();
    		
    		if (s1 == s2) {
    			System.out.println("只有一个实例被创建!");
    		}
    	}
    }
    
  • 相关阅读:
    c如何弹出保存路径/保存文件对话框
    c++ 读写txt方法
    windows获取环境变量
    Block UI 获取treelist column值
    MFC中如何弹出选择文件/文件夹对话框(C++)
    What can change the CID of a NX license server?
    spring之AOP
    spring注解开发
    spring配置Bean
    spring之IOC和DI实现
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3045224.html
Copyright © 2011-2022 走看看