设计模式之单例模式

来源:互联网 发布:怎样查看凯立德端口 编辑:程序博客网 时间:2024/05/29 02:48

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