java基础------》设计模式---》单例设计模式(饿汉式和懒汉式)

本文详细介绍了单例设计模式中的饿汉式与懒汉式两种实现方法。饿汉式通过提前实例化确保对象唯一性,而懒汉式则按需实例化,需注意线程安全问题。文中提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例设计模式的步骤:
1.私有化构造函数;
2.声明本类的引用类型变量,并且使用该变量指向本诶对象;
3.提供一个公共静态的方法获取本类的对象。



单例设计模式:保证一个类中只有一个对象。

1.饿汉式:


public class design_pattern_hungerType {
    //单例设计模式
    private design_pattern_hungerType(){//此处私有化是禁止别的类使用实例化方式来获取懒汉对象
        
    }
    
    private static design_pattern_hungerType des=new design_pattern_hungerType();//一开始就准备了对象,就好比去旅游时用背包装了好多食物,故被称之为饿汉式
    public static design_pattern_hungerType getinstance(){
            return des;
    }
    public static void main(String[] args) {
        design_pattern_hungerType h1 = design_pattern_hungerType.getinstance();
        design_pattern_hungerType h2 = design_pattern_hungerType.getinstance();
        System.out.println(h1==h2);
    }
}
/*总结:创建饿汉式单例设计模式的步骤:
1.将构造私有化,不让其他类通过实例化取得对象。
2.在创建getinstance方法之前,将自己初始化,得到对象
3.通过return 方式得到返回对象*/
4.懒汉式线程使安全的,但是它的效率比较慢

2.懒汉式

//此方法是线程存在问题的懒加载方法
2.1.class design_pattern_lazyType{
    private design_pattern_lazyType() {
        
    }
  private static design_pattern_lazyType lz;
    private static design_pattern_lazyType getinstance(){
        if(lz==null){
            design_pattern_lazyType lz = new design_pattern_lazyType();
        }
        return lz;
    }    
}
/*总结:创建懒汉式(线程非安全)单例模式步骤:
1.创建私有化构造函数
2.创建懒汉式静态变量,
3.创建getinstance,通过判断语句,判断对象是否为空,对象是空的则赋予对象新对象。*/


2.2线程安全的懒汉式
class design_pattern_lazyType{
    private design_pattern_lazyType() {
        
    }
  private static design_pattern_lazyType lz;
    private static design_pattern_lazyType getinstance(){
        if(lz==null){
            safe_lz();
        }
        return lz;
    }    
    private static synchronized design_pattern_lazyType safe_lz(){//创建一个线程安全的(加上锁的创建对象的静态私有方法),可以在本类任何地方使用以便创建获取加上锁的对象,从而解决懒汉式的线程问题
        if(lz==null){
            design_pattern_lazyType lz = new design_pattern_lazyType();
        }
        return lz;
    }
}
总结:创建懒汉式(线程安全)的单例模式步骤:
1.创建私有化构造函数
2.创建静态带锁的对象创建方法
3.创建对象并使用带锁的静态方法直接获取线程安全的对象,从而解决懒汉式单例模式中的线程问题
这个模式比较推荐
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值