栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【设计模式Design Pattern】- 单例模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【设计模式Design Pattern】- 单例模式

单例模式(Singleton Pattern)属于属于创建型模式,focus on the instance creation. 涉及一个单一的类来创建对象,和直接new的区别是确保了只有单个对象被创建。

1、饿汉式
public class LazySingleton {
 
    
    private LazySingleton(){
         
    }
     
    
    private static final LazySingleton single=new LazySingleton();//静态常量对象
     
    
    public static LazySingleton getInstance(){
        return single;
    }
}

public class Test {
 
    public static void main(String[] args) {
        LazySingleton singleton1=LazySingleton.getInstance();
        LazySingleton singleton2=LazySingleton.getInstance();
        System.out.println(singleton1==singleton2);
    }
}

运行输出:
true

2、懒汉式
public class EagerSingleton {
 
    
    private EagerSingleton(){
         
    }
     
    
    private static EagerSingleton single;
     
    
    public synchronized static EagerSingleton getInstance(){
        if(single==null){
            System.out.println("第一次调用的实例化");
            single=new EagerSingleton();
        }
        return single;
    }
}

测试方法同上
我们可以看到 区别
饿汉式是先定义实例的 而懒汉式是先定义引用,当第一次调用getInstance的时候 进行对象实例化操作;
当然这里我们考虑到多并发的情况 多个线程同时调用这个方法的时候,会出现问题,所以我们加了同步锁 synchronized 来保证同一时刻只有一个线程进入方法;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号