单例模式
单例模式是Java中的一种设计模式。这种模式提供了一种创建对象的方式。以往的创建对象的方式。是通过其他类去实例化这个对象,也就是new这个对象。
那么问题来了,假如有多个类都要使用这个对象,那么这个对象就会被多次实例化,多次创建,多次销毁。这样无疑给内存以及JVM(Java虚拟机)增加了负担。单例模式解决了这个问题。单例模式的类是自己管理类的创建。
简单介绍一下Java中类的实例化
1.通过new语句创建对象。
2.是通过反射
3.调用对象的clone()方法
一个类的创建以及实例化。最先走的是其的构造方法。构造方法对这个类进行创建以及初始化。假如这个类没有构造方法。那么JVM会自动创建一个无参的构造方法。
话不多说上代码:
- 单例模式
/**
* 懒汉式,线程安全的单例模式
*/
public class Single {
private static Single single = new Single();
private Single() {
System.out.println("我是单例模式的构造方法");
}
public static synchronized Single getInstance() {
if (single == null) {
single = new Single();
}
return single;
}
public void showMessage() {
System.out.println("Hello World");
}
}
- 正常模式
/**
* 正常的类
*/
public class People {
private Single name;
public People() {
System.out.println("我是People的构造方法");
}
public void showMessage() {
System.out.println("Hello World");
}
}
重点来了…
public class TestMain {
public static void main(String[] args) {
People people = new People();
People people1 = new People();
people.showMessage();
people1.showMessage();
Single single = Single.getInstance();
Single single1 = Single.getInstance();
single1.showMessage();
single.showMessage();
}
}
- 输出结果
很明显在没有使用单例模式的类中俩次实例化people类。系统分别创建了2个不同的对象。
而使用了单例模式的类中虽然实例化了2次。但是类只创建了一次。