java复习——单例设计模式

83 阅读2分钟

二、单例设计模式

单例(单个实例):在软件中,某个类只能被实现一次,并且该类只提供一个取得其对象的方法

1.饿汉式

一上来就创建一个对象

提前创建对象,随时可以用。

饿汉式可能造成创建了对象没有使用

【单例模式-饿汉式步骤】

  1. 构造器私有化(防止外部类new该类)
  2. 在类的内部实例化(使用静态属性)
  3. 向外部提供一个公共方法,返回对象(静态方法)
class dome{
    private String name;
    //1.私有化构造器
    private dome(String name){
        this.name = name;
    }
    //2.在类的内部new对象(使用静态属性static)
    private static dome dm = new dome("饿汉");
    //3.向外提供公共方法获取对象(静态方法)
    public static dome Getdome(){
        return dm;
    }
}

2.懒汉式

啥时用,啥时候造,延迟对象创建

当需要创建的时候再调用

防止资源浪费

【单例模式-懒汉式步骤】

  1. 构造器私有化(防止外部类new该类)
  2. 提供一个该类的静态属性
  3. 向外提供一个创建该类的公共方法
class dome{
    private String name;
    //1.私有化构造器
    private dome(String name){
        this.name = name;
    }
    //2.提供一个该类的静态属性
    private static dome dm;
    //3.向外提供一个创建该类的公共方法
    public static dome Getdome(){
        if(dm == null){
           dm =  new dome("懒汉");
        }
        return dm;
    }
}

3.饿汉式VS懒汉式

  1. 饿汉式与懒汉式的本质区别在于创建对象的时机不同

    饿汉式:在对象加载的时候就会创建

    懒汉式:在需要使用该对象的时候再调用

  2. 饿汉式是线程安全的,懒汉式是线程不安全的。

    懒汉式:如果同一时间多个线程进入方法,就会创建多个对象,打破了单例。

4.使用场景

image-20230110125017338