为了账号安全,请及时绑定邮箱和手机立即绑定

java单例设计模式学习

标签:
Java

  • 饿汉式和懒汉式的区别

    • 1,饿汉式是空间换时间,懒汉式是时间换空间

    • 2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象

    • 懒汉模式

      class Singleton {//1,私有构造方法,其他类不能访问该构造方法了private Singleton(){}//2,声明一个引用private static Singleton s ;//3,对外提供公共的访问方法public static Singleton getInstance() {             //获取实例if(s == null) {    //线程1等待,线程2等待    s = new Singleton();}return s;}
# 饿汉模式

class Singleton {
//1,私有构造方法,其他类不能访问该构造方法了
private Singleton(){}
//2,创建本类对象
private static Singleton s = new Singleton();
//3,对外提供公共的访问方法
public static Singleton getInstance() {             //获取实例
return s;
}

# 第三种:

class Singleton1 {
//1,私有构造方法,其他类不能访问该构造方法了
private Singleton1(){}
//2,声明一个引用
public static final Singleton1 s = new Singleton1();

}

public static void main(String[] args) {
//Singleton s1 =new  Singleton();
Singleton1 s1 = Singleton1.s;
Singleton1 s2 = Singleton1.s;
System.out.println(s1 == s2);

}
# 整合

package com.heima.thread;

public class Demo1_Singleton {

/** * @param args * * 单例设计模式:保证类在内存中只有一个对象。 */public static void main(String[] args) {    //Singleton s1 = new Singleton();    Singleton s1 = Singleton.s;             //成员变量被私有,不能通过类名.调用    //Singleton.s = null;    Singleton s2 = Singleton.s;    System.out.println(s1 == s2);/*  Singleton s1 = Singleton.getInstance();    Singleton s2 = Singleton.getInstance();    System.out.println(s1 == s2);*/}

}

/*

  • 饿汉式

class Singleton {
//1,私有构造方法,其他类不能访问该构造方法了
private Singleton(){}
//2,创建本类对象
private static Singleton s = new Singleton();
//3,对外提供公共的访问方法
public static Singleton getInstance() {             //获取实例
return s;
}
}/
/

  • 懒汉式,单例的延迟加载模式
    /
    /
    class Singleton {
    //1,私有构造方法,其他类不能访问该构造方法了
    private Singleton(){}
    //2,声明一个引用
    private static Singleton s ;
    //3,对外提供公共的访问方法
    public static Singleton getInstance() {             //获取实例
    if(s == null) {
    //线程1等待,线程2等待
    s = new Singleton();
    }

    return s;

    }
    }/
    /

  • 饿汉式和懒汉式的区别

  • 1,饿汉式是空间换时间,懒汉式是时间换空间

  • 2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象
    */

class Singleton {
//1,私有构造方法,其他类不能访问该构造方法了
private Singleton(){}
//2,声明一个引用
public static final Singleton s = new Singleton();

}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消