• Singleton(单例模式)


    一、
    /**
     * lazy man(不是线程安全的)
     * @author TMAC-J
     *
     */
    public class Singleton {
    	
    	private static Singleton instance;
    	
    	private Singleton(){}
    	
    	public static Singleton getInstance(){
    		if(instance!=null){
    			instance = new Singleton();		
    			}
    		return instance;
    	}
    	
    }
    
    二、
    /**
     * lazy man(线程安全)
     * @author TMAC-J
     *
     */
    public class Singleton {
    	
    	private static Singleton instance;
    	
    	private Singleton(){}
    	
    	public static synchronized Singleton getInstance(){
    		if(instance!=null){
    			instance = new Singleton();		
    			}
    		return instance;
    	}
    	
    }
    
    三、
    /**
     * hungry man(天生线程安全,缺点是类加载的时候就会实例化)
     * @author TMAC-J
     *
     */
    public class Singleton {
    	
    	private static Singleton instance = new Singleton();
    	
    	private Singleton(){}
    	
    	public static Singleton getInstance(){
    		return instance;
    	}
    	
    }
    
    四、
    这种写法和上面效果一样
    public class Singleton {  
        private Singleton instance = null;  
        static {  
        instance = new Singleton();  
        }  
        private Singleton (){}  
        public static Singleton getInstance() {  
        return this.instance;  
        }  
    }
    
    五、
    
    /**
     * 静态内部类
     * 
     * @author TMAC-J
     *
     */
    public class Singleton {
     
    	private static class SingletonHolder {
    		private static  final Singleton instance = new Singleton();
    	}
    
    	private Singleton(){};
    	
    	public static final Singleton getSinleton(){
    		return SingletonHolder.instance;
    	}
    }
    
    六、
    
    public enum Singleton {  
        INSTANCE;  
    }  
    
    七、
    /**
     * 双重锁
     * 
     * @author TMAC-J
     *
     */
    public class Singleton {
     
    	private static Singleton instance;
    	
         private Singleton(){}

    public static Singleton getInstance(){ if(instance == null){ synchronized (Singleton.class) { if(instance == null){ instance = new Singleton(); } } } return instance; } } 最常用的就是双重锁了,效率还可以

      

  • 相关阅读:
    数组指针的一个易错点
    jQuery on()方法
    php 前一天或后一天的日期
    用jQuery监听浏览器窗口的变化
    jquery获取json对象中的key小技巧
    JQuery操作元素的属性与样式及位置
    用JQuery操作元素的style属性
    如何删除jsPlumb连接
    jsPlumb.jsAPI阅读笔记(官方文档翻译)
    Jquery empty() remove() detach() 方法的区别
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6226594.html
Copyright © 2020-2023  润新知