单例设计模式---懒汉式和饿汉式
概念:在某些特殊场合中,一个类对外提供且只提供一个对象时,这样的类叫 做单例类,而设计单例的流程和思想叫做单例设计模式(如:。
单例设计模式的实现流程
-
私有化构造方法,使用private关键字修饰。
-
声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。
-
提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。
单例设计模式的实现方式
• 单例设计模式的实现方式有两种:饿汉式 和 懒汉式,在以后的开发中推 荐饿汉式。
code-饿汉式:
public class Singleton {
// 2.声明本类类型的引用指向本类类型的对象,使用private static关键字共同修饰
private static Singleton sin = new Singleton(); // 饿汉式
// 1.私有化构造方法,使用private关键字修饰
private Singleton() {}
// 3.提供公有的get方法负责将对象返回出去,使用public static关键字共同修饰
public static Singleton getInstance() {
return sin;
}
}
测试代码:
public class SingletonTest {
public static void main(String[] args) {
src.Singleton s1 = Singleton.getInstance();
src.Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2); // true
}
}
code--懒汉式:
public class Singleton {
// 2.声明本类类型的引用指向本类类型的对象,使用private static关键字共同修饰
private static src.Singleton sin = null; // 懒汉式
// 1.私有化构造方法,使用private关键字修饰
private Singleton() {}
// 3.提供公有的get方法负责将对象返回出去,使用public static关键字共同修饰
public static Singleton getInstance() {
if(null == sin) {
sin = new Singleton();
}
return sin;
}
}
懒汉式和饿汉式区别:
懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。
饿汉式是典型的空间换时间,当类装载的时候就会创建类实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断了,节省了运行时间。