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

创建型设计模式-单例设计模式和应用

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

创建型设计模式-单例设计模式和应用

创建型设计模式-单例设计模式和应用 单例设计模式
  • 单例设计模式:

    • 单例的意思只包含一个对象被称为但是的特殊类
    • 通过单例设计模式可以保证系统种,应用该模式的类只有一个对象实例
  • 使用场景:

    • 业务系统全局只需要一个对象实例,比如发号器。redis链接对象等
    • Spring IOC容器中的bean默认就是单例
    • Spring boot 中的controller、service、dao层中通过@Autowire的依赖注入对象默认都是单例模式
  • 分类:

    • 懒汉:所谓的懒加载,延迟创建对象。
    • 饿汉:与懒汉相反,提前创建对象
  • 实现步骤

    • 私有化构造方法
    • 提供获取单例的方法
单例设计模式中的懒汉式实现方法
  • 单例设计模式-懒汉式的几种实现方法
package Java设计模式.创建型设计模式.单例设计模式;

import java1031.LazySingleton;


public class SingletonLazy {
    private static SingletonLazy instance;
    
    private SingletonLazy(){};

    
    public void process(){
        System.out.println("方法调用成功");
    }

    
    

    
    public synchronized static SingletonLazy getInstance(){
        if (instance == null){
            instance = new SingletonLazy();
        }
        return instance;
    }
}

单例模式中的懒汉式实现+双重检查锁定+内存模型
  • 改进实现方法
 
     private static volatile SingletonLazy instance;
    public static SingletonLazy getInstance(){
        //第一重检查
        if (instance == null){
            //线程锁定
            synchronized (LazySingleton.class){
                //第二重检查
                if (instance == null){
                    instance = new SingletonLazy();
                }
            }
        }
        return instance;
    }
单例模式中的饿汉式实现方法
  • 饿汉方式:提前创建好对象
  • 优点:实现简单,没有多线程同步问题
  • 缺点:不过有无使用,instance对象一直占着内存
  • 如何选择:
    • 如果对象不大,且创建不复杂,之间使用饿汉式
    • 其他情况使用懒汉式
package Java设计模式.创建型设计模式.单例设计模式;


public class SingletonHungry {
    private static SingletonHungry instance = new SingletonHungry();
    private SingletonHungry (){};
    public static SingletonHungry getInstance(){
        return instance;
    }
}

JDK源码里面的单例设计模式
  • JDK中Runtime类 饿汉方式

  • JDK中Desktop类 懒汉方式

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

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

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