设计模式-单例模式

本文详细介绍了设计模式中的单例模式,包括其应用场合、完整设计思想及两种实现方式——饿汉模式和懒汉模式。单例模式确保了在整个应用程序中只有一个实例存在,常用于配置文件、工具类、线程池等场景。饿汉模式在类加载时即创建实例,线程安全但初始化较慢;懒汉模式在首次调用时创建,线程不安全但延迟初始化。
摘要由CSDN通过智能技术生成

设计模式

  • 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
  • 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

应用场合

  • 有些对象只需要一个就足够了如古代皇帝、老婆作用

  • 配置文件、工具类、线程池、缓存、日志对象等

    • 如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等
  • 为了保证某一个类不管怎么创建,都只在堆内存中开辟一块空间

  • 保证整个应用程序中某个实例有且只有一个

单例模式完整设计思想

  • 在本类中创建一个对象:SingleDemos=new SingleDemo();
  • 私有化构造方法
  • 提供一个公共的方法,让其他类也可以得到一个对象

单例模式的类型

  • 饿汉模式
  • 懒汉模式

饿汉式

步骤

将构造方法私有化,不允许外部直接创建对象

public class Singleton {
    //将构造方法私有化,不允许外部直接创建对象 
    private Singleton() {} 
}

创建类的唯一实例,并静态私有化—private,static修饰

public class Singleton {
    //将构造方法私有化,不允许外部直接创建对象 
    private Singleton() {}
    //创建类的唯一实例 
    private static Singleton instance=new Singleton(); 
}

提供一个获取实例的静态方法—public,static修饰

public class Singleton {
    //将构造方法私有化,不允许外部直接创建对象
    private Singleton() {}
    //创建类的唯一实例
    private static Singleton instance=new Singleton();
    //提供一个获取实例的静态方法
    public static Singleton getinstance() {
        return instance; 
    } 
}

获取对象的方法:

Singleton S=Singleton.getinstance();

懒汉式

步骤

  • 将构造方法私有化,不允许外部直接创建对象

  • 创建类的唯一实例,并静态私有化—private,static修饰

  • 提供一个获取实例的静态方法—public,static修饰

public class Singleton {
    //将构造方法私有化,不允许外部直接创建对象
    private Singleton() {}
    //声名类的唯一实例
    private static Singleton instance;
    //提供一个获取实例的静态方法
    public static Singleton getinstance() {
        //判断对象是否已经存在
        if(instance==null) {
            //不存在则创建对象
            instance=new Singleton();
        } 	
        //返回对象 
        return instance;
    } 
}

三:懒汉模式和饿汉模式的区别:

  • 饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全的
  • 懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值