类的设计模式之<单例模式/single>

单例模式介绍:

1,类的单例设计模式,采取一定的方法保证整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法


单例模式之--饿汉式--

步骤:

  1. 将构造器私有化 (防止别的类创建对象)
  2. 在本类创建一个静态对象
  3. 在一个静态方法中返回这个静态对象
public class Person {
    private String name;
    //这个对象为什么要用静态来修饰?因为不用静态下面的静态方法就不能调用这个对象。
   private static Person person = new Person("小明");//静态对象
    //如果这个方法不用静态来修饰,那么就只能在别的类里创建这个类的对象来调用了,就又回到起初的位置了
    public static Person person(){//返回对象的方法
        return person;
    }
    private Person(String name) {//私有化的构造器
        this.name = name;
    }
}

饿汉式有一个特点:

只要加载了这个类,那么就会执行创建对象的那行代码,那个对象就已经存在了。

注意:没有调用这个对象,这个对象也会被执行,这样一个特点会造成资源的浪费


单例模式之--懒汉式--

步骤:

  1. 将构造器私有化 (防止别的类创建对象)
  2. 在本类定义一个私有化静态对象
  3. 在一个公共静态方法中返回这个静态对象(在返回前面加上一个判断,如果这个对象是null,就给他 new 一个空间)
public class Animal {
    private String name;
    static int age = 6;
    private static Animal animal;//定义的对象

    public static Animal animal(){//返回对象的方法
        if (animal == null){
            animal = new Animal("cat");
        }
        return animal;
    }

    private Animal(String name) {//私有化的构造器
        System.out.println("构造器被执行。。。");
        this.name = name;
    }
}

而懒汉式的特点就是:

只有第一次调用 animal 方法时,才会给他 new 一个对象,后面再调用时则会返回上一次创建的对象。


总结:

单例模式中,懒汉式比饿汉式更加智能。不会出现没有调用返回对象的方法也创建对象。


饿汉式 VS 懒汉式

1,二者最主要的区别在于创建对象的时机不同:饿汉式是在加载类的时候就创建对象,而懒汉式是在使用时才创建对象。

2,饿汉式不存在线程安全问题,懒汉式存在线程安全问题。(关于线程安全问题,等我学到线程了再来补充)

3,饿汉式存在浪费资源的可能。因为如果没有使用对象,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。

4,再我们JavaSE标准类中,Java.lang.Runtime就是经典的单例模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值