工作好几年了,在实际编码中设计模式也用到了不少,打算写一个介绍设计模式的系列,为后来者提供参考,也为是给自己做一个总结。本系列文章只关系到技术本身,不涉及到业务,笔者水平有限,写的不好,请勿喷。如有错误请在评论区指正,谢谢!
本篇是java设计模式的第一篇—— 单例模式
单例模式是23种设计模式中最好理解的一种设计模式,分为懒汉式和饿汉式。
饿汉式:
class Singleton {
// 直接创建对象
private static final Singleton singleton = new Singleton();
// 私有化 构造函数
private Singleton() {}
// 返回对象实例
public static Singleton getInstance() {
return singleton;
}
}
懒汉式:
class Singleton {
// 声明变量
private static Singleton singleton = null;
// 私有构造函数
private Singleton() {}
// 提供对外方法
public static Singleton getInstance(){
if(singleton == null){
synchronized (Singleton.class) {
if(singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
总结一下要点:
1. 只能拥有一个对象。
2. 构造函数私有,以保证不能创建多余的对象。
3. 在类内创建一个对象,将其引用作为成员变量,但构造函数是私有的,无法new对象,只能将类内对象的引用加上 static 修饰符,以保证可以直接用类加载调用。
4. 这个对象作为成员变量,一般为 private ,所以有对应的get方法。
5. getInstance () 方法必须为 静态方法 。