简单梳理单例模式
单例模式的几种实现
单例模式分为三种实现方法,具体如下
饿汉式
//饿汉式
public class SingleDemo {
private static SingleDemo singleDemo = new SingleDemo();
private SingleDemo() {
}
public static SingleDemo getInstance() {
return singleDemo;
}
}
懒汉式
//懒汉式
public class SingleDemo2 {
private static SingleDemo2 singleDemo2 = null;
private SingleDemo2() {
}
public static SingleDemo2 getInstance() {
if (null == singleDemo2) {
synchronized (SingleDemo2.class) {
if (null == singleDemo2) {
return singleDemo2 = new SingleDemo2();
}
}
}
return singleDemo2;
}
}
内部类 饿汉式
public class SingleDemo3 {
private SingleDemo3() {
}
private static class SingleHold {
private static SingleDemo3 singleDemo3 = new SingleDemo3();
}
public static SingleDemo3 getInstance() {
return SingleHold.singleDemo3;
}
}
这样我们前期的定义就算做完了,
然后我们看具体应用中的使用。
定义业务方法
看在具体业务逻辑中如何使用
public class SingletonTest {
public static void main(String[] args) {
//单例模式
func1();
}
public static void func1(){
SingleDemo singleDemo = SingleDemo.getInstance();
SingleDemo singleDemo1 = SingleDemo.getInstance();
System.out.println(singleDemo == singleDemo1);
SingleDemo2 singleDemo2 = SingleDemo2.getInstance();
SingleDemo2 singleDemo21 = SingleDemo2.getInstance();
System.out.println(singleDemo2 == singleDemo21);
SingleDemo3 singleDemo3 = SingleDemo3.getInstance();
SingleDemo3 singleDemo31 = SingleDemo3.getInstance();
System.out.println(singleDemo3 == singleDemo31);
}
}
执行结果
true
true
true
结果分析
单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式除了可以保证唯一的实例外,还有什么好处呢?
单例模式因为Singleton类封装它的唯一实例,这样它可以严格的控制客户怎样访问它以及合适访问它。
简单点说就是对唯一实例的受控访问。
联系作者
微信公众号
xiaomingxiaola
(BossLiu)
QQ群
58726094
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com