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("只有一个实例被创建!");
    		}
    	}
    }
    
  • 相关阅读:
    Release COM Objects in AE
    图像相关系数
    Geoprocessor edit the featureclasses in memmory
    NetLogo AStar path finding
    IDL+C#三种调用方式
    Dictionary is not like a array
    C# DataGridView 禁止列排序
    工作总结
    (转)常见数据库设计(1)——字典数据
    碎碎念(3)
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3045224.html
Copyright © 2011-2022 走看看