java单列设计模式

一.什么是单例设计模式

  • 保证类在内存中只有一个对象。

二.如何保证类在内存中只有一个对象

  1. 控制类的创建,不让其他类来创建本类的对象
  2. 在本类中定义一个本类的对象
  3. 提供公共的访问方式

三.单例的两种写法

  1. 饿汉式(开发用这种方式)
	class Single {
	
	    private Single(){} 								//1.私有构造函数
	    
	    private static Single s = new Single();			//2.创建本类对象
	    
	    public static Single getInstance() {			//3.对外提供公共的访问方法
	      return s;
	    }  
	    
	} 
	class UseSingle {
	 
	  	public static void print() {					//4.使用饿汉式单列
	  	
	  		Singleton s = Singleton.getInstance();
	  		
	    } 
	    
	}
  1. 懒汉式(面试写这种方式,多线程的问题)
 	//懒汉式,单例的延迟加载模式
 	class Single {
    	
    	private Single(){};						//1.私有构造函数
    	
   		private static Single s;				//2.声明一个本类的引用
    	
    	public static Single getInstance(){		//3.对外提供公共的访问方法
      		if(s == null){
      			//线程1,线程2
      			s = new Single();
      			return s;
    		}
    	}
  	}
  1. 第三种格式(很少用)
	class Single {
	   private Single(){};
	   public static final Single s = new Single();//final是最终的意思,被final修饰的变量不可以被更改
	 }

四.饿汉式和懒汉式区别

  1. 线程安全
    *饿汉式天生就是线程安全的,可以直接用于多线程而不会出现问题.
    *懒汉式本身是非线程安全的.
  2. 资源加载和性能
    *饿汉式用空间换时间
    *懒汉式用时间换空间
上一篇:LeetCode 260. Single Number III


下一篇:手写单例模式