单例类的创建过程

来源:互联网 发布:淘宝开放平台登录授权 编辑:程序博客网 时间:2024/06/03 22:31

单例类

  类的构造器为public修饰,其他类(包括本身)可以自由创建该类的对象,系统性能可能因此下降(频繁的创建对象、回收对象加大了系统开销),某些时候我们只想实例化该类的一个实例,这个时候把该类写成单例类最好不过。

创建过程

  1. 避免其他类创建该对象,把该类的构造方法修饰为 private 型,把构造器对外隐藏起来。
  2. 构造器隐藏起来,我们需要创建一个可以访问( public )的方法调用构造方法创建对象。在调用该方法之前还没有对象存在,所以把此方法写为类方法(用 static 修饰),在未实例化对象之前调用。在此称为A方法。
  3. 因为只允许创建一个对象,A方法内部需要保证我们一定只创建一个对象。在创建对象之前我们需要判断是否创建过对象,所以第一次创建时应该保存我们创建的对象,也就是说需要定义一个类变量保存第一次创建的对象。同A方法,该变量也应该用 static 修饰, 为了保证变量的封装性,变量本身也用 private 修饰。在此称为B。
  4. 至此,A方法内部需要判定 B 是否为空,若为空则创建并存于B,不为空则返回B本身的值。
  5. 完成单例类的创建。
public class LonelyClass {    // 3. 创建变量存储第一次实例化的对象    private static LonelyClass lc;    // 1. 创建私有构造方法    private LonelyClass() {    }    // 2. 创建方法调用构造方法,创建实例。返回值类型为类本身( LonelyClass )    public static LonelyClass getMyClass() {        // 4. 判断是否创建过        if (lc == null) {            lc = new LonelyClass();        }        return lc;    }    public static void main(String[] args) {        // 5. 单例类创建完成 测试        LonelyClass test1 = LonelyClass.getMyClass();        LonelyClass test2 = LonelyClass.getMyClass();        System.out.println(test1 == test2);  // true,因为他们实际是一个对象    }}
原创粉丝点击