【小白的java成长系列】——构造方法私有化(单例设计)

原文链接:http://dtbuluo.com/68.html

有了解过spring框架的童鞋们就知道,spring的bean默认是什么形式呀?———单例形式的。

问:那什么叫做单例?单例其实就是Singleton,顾名思义就是只有单个的实例对象操作。

那为什么要使用单例呢?

至于这个问题,后面再做解释,我们先看代码:

package me.javen.oop;

public class SingletonDemo {

	public static void main(String[] args) {
		Singleton singleton1 = Singleton.getInstance();
		Singleton singleton2 = Singleton.getInstance();
		
		System.out.println(singleton1 == singleton2);
	}
}

class Singleton{
	private static Singleton singleton;
	
	public static Singleton getInstance(){//提供唯一的对象获取口
		if(singleton == null){
			singleton = new Singleton();
		}
		return singleton;
	}
	
	private Singleton(){//私有化构造方法
		System.out.println("只创建一次~");
	}
}

我想问一下同志们,这个的输出是什么?

运行输出结果:

只创建一次~

true

我们可以看到singleton1和singleton2是相等的,意味着这两个对象是同一个对象。

首先来看一下私有化构造方法:

意味着外部使用Singleton这个类的时候,不能通过new关键字创建对象了。。以下会报错。。



都不能new了,那我们怎么使用Singleton类呢?

通过以下方式公开:

	public static Singleton getInstance(){//提供唯一的对象获取口
		if(singleton == null){
			singleton = new Singleton();
		}
		return singleton;
	}
能不能不提供这样的一个方法?

当然能喽,只是不提供这样的一种方式,你这个类就真的无法使了~


现在来回答开篇的那个问题,为什么要使用单例?

1、减少不必要的内存开销,你想啊,要是创建10个对象,就得开销10分内存吧,而单例就1个对象,当然就开销1份内存喽。。

如果能减少内存开销,那我们在设计类的时候,可不可以都设计成单例的?这样不是很节省内存。。这个问题,先不解释哈~留给学习的好童鞋思考

2、简化对象创建过程的复杂性。。这个怎么说呢,要看对象创建的复杂性了~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr-稻帅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值