单例模式 主要的用法

一.什么是单例模式?

单例模式(Singleton Pattern)是一种常用的设计模式,它保证在整个应用程序中,某个类只有一个实例。

二.使用单例模式有什么好处?

(1)当一个对象在多个类同时new的时候就可以使用单例模式,它提供了一个全局的访问点,可以方便地在应用程序的任何地方使用该实例。

(2)节省资源:单例模式只创建一个实例

(3)数据共享:在多个模块中一起用一个实例。

单例模式在需要确保对象唯一性,全局访问和节省资源的情况下非常有用!

三.使用场景

(1)需要频繁创建对象和销毁对象

(2)需要使用一个全局对象

(3)需要在整个应用程序中共享一个对象

四.单例模式的实现步骤

(1)不让外界的人随意new ——> 构造方法私有化

(2)dao内部自己来new一个对象 ——> 静态

(3)提供一个公有的方法,让别人可以访问你这个对象

五.单例模式的主要划分

(1)懒汉模式:顾名思义就是很懒,在调用方法的时候才会去new,会导致多线程竞争的问题         ——> 以时间换空间

(2)饿汉模式:顾名思义一来就非常饿,一来就先new一个对象,不管你有没有用到,会造成空间浪费 ——>以空间换时间

(3)静态内部类模式:在类加载的时候就创建了唯一的实例,并且该实例被隐藏在静态内部类中,这样可以避免多线程竞争的问题。

(4)枚举模式:使用枚举来实现单例模式,这样可以保证在整个程序运行期间,只有一个实例。

六.代码实现

(1)懒汉模式

//懒汉模式---先不着急实例化,调用的时候在进行实例化
public class A{
    private static A a;  //静态,在内部自己来new
    private A(){}      //不让外界随意用,构造方法私有化
    
    //提供公有的方法,返回类型为A类的类型,让外界可以调用
    public static A getInstance(){
        if(a == null){
            //如果a对象为空就实例化,不是为空则就说明对象存在,就不用每次都new一下
            a = new A();
        }
        return a;
    }
}

(2)饿汉模式

//饿汉模式 --- 一来就实例化,不管你有没有用到
public class A{
    private static A  a = new A(); //内部私有化实例化
    private A(){}                  //不让外界随意new使用---构造方法私有化
    
    //提供一个公有的方法,让别人来访问这个对象
    public static A getInstance(){
        return a;
    }
}

(3)静态内部类模式

public class A{
    
    //静态内部类
    private static class B{
        private static final A INSTANCE = new A();  //常量的命名规则一般是大写
    }

    private A() {
    }


    public static A getInstance() {
        return B.INSTANCE;
    }
}

(4)枚举模式

//使用枚举来实现单例模式
public enum A{
    INSTANCE;

    public void doSomething() {
        // do something
    }
}
  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值