Java中的单例设计模式

Java中的单例设计模式有很多,这边我们介绍懒汉式和饿汉式这两种。

单例设计模式有一下特点:

1、单例类只能有一个实例

2、单例类必须自己创建自己的唯一实例

3、单例类必须给所有其他对象提供这一实例

单例模式有三要素:

1、构造方法私有化

2、静态属性指向实例

3、public static的getlnstance方法,返回第二步的静态属性

使用场景:

1、单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些需
要频繁创建销毁的对象,使用单例模式可以提高系统性能。

2、当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使
用new。

3、需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session工厂等)。

代码例子:

public class Test04 {
    //饿汉式单例类,在类初始化时,已经自行实例化
    private Test04(){}
    private static final Test04 single = new Test04();
    //静态方法工厂
    public static Test04 getInstance(){
        return single;
    }
}
public class Test05 {
    //懒汉式单例类,在第一次调用的时候实例化自己
    private Test05(){}
    private static Test05 single=null;
    //静态工厂方法
    public static Test05 getInstance(){
        if(single==null){
            single = new Test05();
        }
        return single;
    }
}
/**
 *          懒汉式              饿汉式
 * 效率       低                   高       懒汉式每次都需要进行判断,而饿汉式不需要判断,相比较而言懒汉式效率低饿汉式效率高
 * 内存       少                   多       因为饿汉式在类加载的时候就会直接创建对象,所以就会直接占用内存而此时不一定使用该对象,
 *                                        而懒汉式只会在需要使用的时候才会创建对象,占用内存,所以说懒汉式占用内存少,饿汉式早
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值