这个模式是很有意思,而且比较简单。项目中用的最多的恐怕就是这个模式了,人们对他的熟悉程度是比较高的。
单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?
我们举个比较难复制的对象:太阳
public class Sun{
private static Sun= null;
//构造器私有,从而使用户不能通过new关键字创建多个对象。
private Sun(){
}
//不能new对象,我们就必须提供给用户一个可以操作的对象出来,不然没有意义。
public static Sun getInstance(){
//第一个判空是判断有没有new出唯一对象的,如果有 就不必进入锁,提高性能。
if(sun == null){
//加锁,确保只有一个访问对象
synchronized(Sun.class){
//第二个判空,防止第一个对象new出来,第二个访问对象进来的情况,加了这层判断第二个 访问对象进来会发现已经有对象了,不必再创造一个。
if (sun == null){
sun = new Sun();
}
}
}
return sun;
}
}
网友评论