设计模式之单例模式

        前段时间看了《设计模式之禅》这本介绍设计模式的书,感觉讲的挺好,最起码给我的感觉是很通俗易懂,相信大家也都学过一些设计模式,设置是为了准备面试而特意去网上查了一些有关设计模式的资料,看完这本书本来是决定每天至少写一篇关于博客的,目的就是讲自己学到的东西做一个整理,但是由于中间各种原因,没有坚持下来,翻看自己的博客,发现几篇文章还是14年写的,很是惭愧,今天决定每天发表一篇博客,主要是对自己学到的东西做一些总结。


单例模式的定义:

确保一个类只有一个实例,而且自行实例化并像整个系统提供这个实例


通过定义可以得出单例模式的几个有点:

  • 单例类在内存中只有一个实例,所以节省了系统的内存开销
  • 单例类只有一个实例,所以节省了系统的性能开销
  • 单例类在内存中只有一个实例,所以可以保证所有类共享该实例


单例模式通用类图如下:


单例模式分为:饿汉式和懒汉式


懒汉式代码如下:

public class Singleton {

    // 构造器私有化
    private Singleton() {

    }

    // 私有化 静态 本类型的属性
    private static Singleton instance = null;

    // 对外提供一个静态的返回本类型的方法
    public static Singleton getInstance() {

        if(instance==null){
            instance=new Singleton();
        }
        return instance;
    }
}

饿汉式代码如下:

public class Singleton {

    // 构造器私有化
    private Singleton() {

    }

    // 私有化 静态 本类型的属性
    private static Singleton instance = new Singleton();

    // 对外提供一个静态的返回本类型的方法
    public static Singleton getInstance() {

        return instance;
    }
}

通过看代码可以得知单例模式的缺点是无法被继承,因为单例模式的要求是构造方法私有化。


单例模式的适用场景:

  1. 资源共享
  2. 要求生成唯一序列号的环境

虽然我们很少自己写单例模式,但是单例模式在很多地方被使用了,相信使用过spring的人,应该知道在spring里每个Bean默认是单例的,这样做的优点就是Spring容器可以管理这些Bean的生命周期。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值