java 单例模式

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

1-->饿汉式

public class Test {
    public static void main(String[] args){
        System.out.println(GirlFriend.info());
    }
}
public class GirlFriend {
    //单例模式:饿汉式
    //1、私有构造器,保证一个类只有一个对象
    //2、创建对象,在类的内部直接创建
    //3、提供一个公共的static方法,返回对象
    private String name;
    private GirlFriend(String name){
        this.name = name;
    }

    private static GirlFriend xh = new GirlFriend("小红");

    public static GirlFriend info(){
        return xh;
    }

    @Override
    public String toString() {
        return "GirlFriend{" +
                "name='" + name + '\'' +
                '}';
    }
}

 2-->懒汉式

public class TestBB {
    public static void main(String[] args){
        System.out.println(BB.info());
    }
}

public class BB {
    //单例模式:懒汉式
    //1、构造器私有
    //2、创建静态对象
    //3、创建方法实现 需要时才创建实例化对象
    private String name;
    private BB(String name){
        this.name = name;
    }

    private static BB bb;

    public static BB info(){
        if(bb == null){
            bb = new BB("小蓝");//只有调用该方法并当bb没有创建实例化对象时,才会调用
        }
        return bb;
    }

    public String toString(){
        return "BB{" +
                "name='" + name +"\'" +
                '}';
    }
}

饿汉式,懒汉式区别:

1、创建时机不同:饿汉式在类加载时就创建对象实例,而懒汉式是在使用时才创建

2、饿汉式存在资源浪费问题,只要是类加载就会创建实例,而不管是否使用。

3、饿汉式不存在线程安全问题,懒汉式存在线程安全问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值