java 的单例设计模式

/*
单列设计模式:就让一个类永远只产生一个对象
恶汉式:没有线程安全问题,开发中直接使用
    1.私有化构造函数
    2.创建声明一个私有的静态的最终的本类对象
    3.提供一个公共的返回值为本类对象的一个方法
懒汉式:
    1.私有化构造函数
    2.声明一个私有的静态本类对象
    3.提供一个公共的返回值为本类对象的一个方法
        在返回本类对象变量的时候要先判断这个变量是否等于null,如果等于null就创建本类的对象,如果不等于null就直接返回

*/

用代码解释下为什么要这么做

class Test{
    public static void main(String[] args){
        System.out.println("3");
        Father1 fa1=Father1.getFather1();
        System.out.println("4");        
        Father fa=Father.getFather();
        System.out.println("5");
        Father1 faa=new Father1(1);
        
    }
}
class Father{
private Father(){//构造私有保证不能在别的类里初始化
    System.out.println("2");
}
private static final Father fa=new Father();//final保证只实例化一个
public static Father getFather(){//加逻辑,static保证别的类能通过类.方法的得到它
    return fa;
}
}
class Father1{
private Father1(){
    System.out.println("1");
}
public Father1(int a){}//不私有化的后果
private static Father1 fa;//
public static Father1 getFather1(){//是通过加逻辑保证只实例化一个
    if(fa==null)
        fa=new Father1();
    return fa;
}
}
//懒汉式可能出现a创建引用后挂起,b因此可以判断为真而实例化,a继续后也实例化,由于不是终态而引起冲突;但设为终态需要在创建对象成功前初始化,在这里不能设为终态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值