单例模式:一个类有且只有一个实例。即一个类不论创建多少个对象,每个对象指向的内存地址一致。
一、实现步骤
- 构造器私有化,控制外部不允许直接创建对象。
- 创建一个静态的私有的该类的引用,存储创建的唯一对象
- 创建公共的静态的访问方式
二、实现方式
(一)、饿汉式:在类第一次加载完成后就创建对象
1.特点:线程安全,但效率低,容易产生垃圾对象
2.实现:
例:在计算机中打开“我的电脑”,不管打开几次都只是打开了同一个“我的电脑”。
public class MyComputer{
private MyComputer(){ }
private static MyComputer mc = new MyComputer();
public static MyComputer Interview(){
return mc;
}
}
public class Test {
public static void main(String[] args) {
MyComputer mc1=MyComputer.Interview();
MyComputer mc2=MyComputer.Interview();
MyComputer mc3=MyComputer.Interview();
System.out.println(mc1);
System.out.println(mc2);
System.out.println(mc3);
}
}
(一)、懒汉式:在第一次调用功能时才创建对象
1.特点:线程不安全,但效率高
2.实现:
例:在计算机中打开“我的电脑”,不管打开几次都只是打开了同一个“我的电脑”。
public class MyComputer{
private MyComputer(){ }
private static MyComputer mc = null;
public static MyComputer Interview(){
if (mc == null){
mc = new MyComputer;
}
return mc;
}
}
public class Test {
public static void main(String[] args) {
MyComputer mc1=MyComputer.Interview();
MyComputer mc2=MyComputer.Interview();
MyComputer mc3=MyComputer.Interview();
System.out.println(mc1);
System.out.println(mc2);
System.out.println(mc3);
}
}