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);

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫_water

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值