单例设计模式---懒汉式和饿汉式

概念:在某些特殊场合中,一个类对外提供且只提供一个对象时,这样的类叫 做单例类,而设计单例的流程和思想叫做单例设计模式(如:。
 
单例设计模式的实现流程
  • 私有化构造方法,使用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;
}
}
懒汉式和饿汉式区别:

        懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。

        饿汉式是典型的空间换时间,当类装载的时候就会创建类实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断了,节省了运行时间。




原文地址:https://www.cnblogs.com/goldenwangyi/p/15031617.html