概述
单例模式是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,指一个类只有一个实例,且该类能自行创建这个实例的一种模式。
单例模式有 3 个特点:
- 单例类只有一个实例对象;
- 该单例对象必须由单例类自行创建;
- 单例类对外提供一个访问该单例的全局访问点。
通常有两种方式用来实现单例模式:懒汉式、饿汉式
懒汉式
懒汉式不在类加载的时候生成实例,只有当第一次调用 getlnstance 方法时才去创建这个单例。
//懒汉式
public class LazySingle {
private static LazySingle instance;
private LazySingle(){}
public static synchronized LazySingle getInstance(){
if (instance == null){
instance = new LazySingle();
}
return instance;
}
}
饿汉式
饿汉式中类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了。
//饿汉式
public class HungrySingle {
private final static HungrySingle instance = new HungrySingle();
private HungrySingle(){}
public static HungrySingle getInstance(){
return instance;
}
}
测试
public class SingleMain {
public static void main(String[] args) {
LazySingle lazySingle1 = LazySingle.getInstance();
LazySingle lazySingle2 = LazySingle.getInstance();
System.out.println("懒汉式创建的第一个对象:" + lazySingle1);
System.out.println("懒汉式创建的第二个对象:" + lazySingle2);
System.out.println(lazySingle1 == lazySingle2);
HungrySingle hungrySingle1 = HungrySingle.getInstance();
HungrySingle hungrySingle2 = HungrySingle.getInstance();
System.out.println("饿汉式创建的第一个对象:" + hungrySingle1);
System.out.println("饿汉式创建的第二个对象:" + hungrySingle2);
System.out.println(hungrySingle1 == hungrySingle2);
}
}
可以看到,不管是懒汉式还是饿汉式多次创建的都是对象完全一样,这也就体现了单例模式只会创建一个实例的特点。
前面几节的内容供大家参考:
- 什么是设计模式:【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则
- 工厂模式:【每天一个java设计模式(一)】 - 工厂模式
- 抽象工厂模式: 【每天一个java设计模式(二)】 - 抽象工厂模式
下一节:
- 原型模式:【每天一个java设计模式(四)】 - 原型模式
最后
以上就是顺心口红为你收集整理的【每天一个java设计模式(三)】 - 单例模式的全部内容,希望文章能够帮你解决【每天一个java设计模式(三)】 - 单例模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复