java中的单例模式(懒汉模式和饿汉模式)

所谓单例模式,主要是为了解决,java对象有且只有一个,本质就是构造方法私有化,

单例模式:主要是为了节省内存空间,缺点是不能被继承,因为构造方法私有化了,外部的程序不能被调用了,
     * 懒汉模式:构造方法私有化,
     * 第一步:讲所有构造方法私有化,目的是让外部程序不能被调用,然后创建了一个方法,用来供外部程序调用
     * */ 

public class Customer {
	/*单例模式:主要是为了节省内存空间,确定是不能被继承,构造方法私有化,外部
	 * 程序不能调用构造方法,只在内存当中
	 * 懒汉模式:构造方法私有化,
	 * 第一步:讲所有构造方法私有化,目的是让外部程序不能被调用
	 * */
	private static Customer c;
	
	private Customer(){}
	//对外提供了一个公开的获取customer类型对象的方法
	public static Customer getInstance(){
		if(c==null){
			c=new Customer();
		}
		return c;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Customer c1=Customer.getInstance();
		Customer c2=Customer.getInstance();
		System.out.println(c1==c2);

	}
}

打印结果: true

饿汉模式: 在类加载的阶段就已经创建这个对象了,

/*饿汉模式*/
public class Customer{
	//静态变量
	private static Customer c=new Customer();
	//单例模式第一步:讲所有构造方法私有化,
	// 目的是:让外部程序不能,直接调用构造方法创建对象
	//因为只要构造方法执行,就会有一个新的对象诞生
	private Customer(){}
	// 对外提供一个公开的获取Customer类型对象的方法
	public static Customer getInstance(){
		return c;
	}
	public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	Customer c1=Customer.getInstance();
	Customer c2=Customer.getInstance();
	System.out.println(c1==c2);

}
}

你可能感兴趣的:(JAVA)