兄弟们好,今天是最后一个设计模式了,也是我们最熟悉的单例设计模式,可以说这个设计模式是我们最先接触到的设计模式了。想当年学习JavaSE
的时候,老师聊到一个「饿汉式和懒汉式」,我还纠结了半天,这名字起的很完美。接下来我们一起复习一下单例设计模式吧。
定义:该类的实例仅仅存在一个。单个实例对象——单例模式
我们直接上代码
public class Single {
private static final SingleDesgin singleDesgin = new SingleDesgin();
private Single(){}
public SingleDesgin newInstance(){
return singleDesgin ;
}
}
public class Single {
private SingleDesgin singleDesgin ;
private Single(){}
public SingleDesgin newInstance(){
if(singleDesgin == null){
singleDesgin = new SingleDesgin();
}
return singleDesgin ;
}
}
public class Single {
private Single(){}
public SingleDesgin newInstance(){
return SingleBuild.singleDesgin;
}
private static class SingleBuild{
static SingleDesgin singleDesgin = new SingleDesgin();
}
}
public class Single {
private volatile SingleDesgin singleDesgin ;
public SingleDesgin newInstance(){
if(singleDesgin == null){
synchronized (Single.class){
if(singleDesgin == null){
singleDesgin = new SingleDesgin();
}
}
}
return singleDesgin ;
}
}
volatile
保证线程可见性和有序性。关于volatile
关键字可以参考我之前的文章,不过过几天我会发一篇完整讲述JMM
模型的文章,其中讲到了volatile
,可以「关注一波公众号」。(打个广告,哈哈哈)
public enum Single {
INSTANCE
}
Java
创始人的写法,牛批好啦,以上就是所有我认为比较典型的单例设计模式的类型了,至于说什么八种设计模式的写法,无非也就是加一个静态代码块等等操作,将一个操作分两步执行了,没什么新鲜的,上面五种比较典型,兄弟们可以尽情享用。设计模式要结束了。明天或者后天会发一篇文章做一个总结,并且计划一下接下来要做的事情,明天晚上团建,看晚上回来的时间吧。
好啦,兄弟们晚安呐。明天又是元气满满的一天呢。