设计模式:单例模式节省资源,提高系统性能

本文详细介绍了设计模式中的单例模式,用于解决全局唯一对象的创建和访问问题,以节约内存和提高系统性能。讨论了多种单例实现方式,包括饿汉式、懒汉式、双重检查、静态内部类和枚举,并分析了各自的优缺点及适用场景。最后,提到了单例模式在如ID生成器等场景中的应用。
摘要由CSDN通过智能技术生成

一、问题场景

针对唯一递增ID号码生成器,如果需要时就直接创建一个ID对象,当程序中有两个对象,那就会存在生成重复ID的情况,此外频繁创建ID对象,也会消耗内存空间。

二、问题分析

ID生成器类是全局使用的类,会被频繁创建和销毁,为了节省内存空间,就要控制创建对象的数量,保证一个类只有一个对象,并提供一个全局的访问点。这就是创建型设计模式中的单例模式。

三、单例定义

单例设计模式指一个类只允许创建一个对象,并提供一个全局访问该对象的静态方法。

四、单例实现方式

为了保证这个对象只有一个,不能被外部程序创建,这个对象的构造函数必须是私有的,只能当前类内部创建。

1、饿汉式

public class SingleTon {
   

    /**
     * 将构造器私有化,防止直接new
     */
    private SingleTon(){
   

    }


    /**
     * 方式一:静态常量方式
     * SingleTon对象实例在定义静态常量时创建
     * 在类装载时就完成实例化
     */
    private static SingleTon instance = new SingleTon();

//    /**
//     * 方式二: 静态代码块方式
//     * SingleTon对象实例的创建放在静态代码块中
//     * 当类装载的时候,就执行静态代码块中的代码,初始化SingleTon对象
//     */
//    private static SingleTon instance;
//    static {
   
//        instance = new SingleTon();
//    }

    /**
     * 提供一个public的静态方法,返回instance
     * @return
     */
    public static SingleTon getInstance(){
   
        return instance;
    }

}

在类加载时创建并初始化好对象。这种创建是线程安全的,不过不支持延迟加载。

结论:不推荐实际开发中使用

2、懒汉式

public class SingleTonLazyLoading {
   

    /**
     * 将构造器私有化,防止直接new
     */
    private SingleTonLazyLoading()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值