美文网首页java设计模式笔记
设计模式一--单例模式

设计模式一--单例模式

作者: 朽木亦自雕 | 来源:发表于2018-09-25 14:04 被阅读206次

单例模式

允许一个类只能有一个实例为系统提供服务,并且实例必须通过new关键字获取

为什么要使用单例模式(单例模式的优点)

1:内存中只有一个实例,则可以减少很多内存开支
2:当一个类的创建需要更多的资源的时候,单例模式就能够减少对系统的性能开销,启动时创建并且永久化对象
3:单例模式可以避免对文件或者资源的多重占用
4:单例模式可以设置在系统的全局访问点,优化和共享资源访问

单例模式下的两种创建方式

饿汉式

饿汉式,就是在系统启动的时候就进行实例化,并不关心什么时候才会使用

public class Singlton{
  //static实例
  private static Singlton singlton = new Singlton();
  //构造方法
  private Singlton(){
  }
  //获取方法
  public static Singlton getInstance(){
    return singlton;
  }
}

懒汉式

懒汉式,在需要的时候才进行实例化,减少启动所使用的时间


public class Singlton{
    //对象并不会启动的时候实例化
    private static Singlton singlton = null;
    //构造方法
    private Singlton(){
    };

    public static Singlton getInstance(){
        //判断是否初始化过,可以避免空指针,或者重复初始化,减少开销
        if(singlton == null){
            //加锁,再次判断,是防止高并发的时候重复初始化对象
            synchronized(){
                if(singlton == null){
                    singlton = new Singlton();
                }
            }
        }
        return singlton;
    }
}

单例模式的缺点

1:单例模式下没有接口,扩展比较困难,想要扩展必须修改代码
2:单例模式下测试困难,并行开发环境下单例模式必须先完成才能进行测试
3:单例模式和单一职责原则有冲突(一个类应该只实现一个逻辑,而不关心是否单例)

单例模式常见场景

1:要求生成唯一系列号
2:项目中需要共享访问点或者共享数据
3:创建对象需要消耗更多的资源的时候,比如IO和数据库连接
4:大量定义常量方法的时候,比如工具类等

注:spring的bean容器下的每个对象都是单例的哦

参考资料:设计模式之禅(二)

相关文章

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式之单例模式

    单例设计模式全解析 在学习设计模式时,单例设计模式应该是学习的第一个设计模式,单例设计模式也是“公认”最简单的设计...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 基础设计模式:单例模式+工厂模式+注册树模式

    基础设计模式:单例模式+工厂模式+注册树模式 单例模式: 通过提供自身共享实例的访问,单例设计模式用于限制特定对象...

网友评论

    本文标题:设计模式一--单例模式

    本文链接:https://www.haomeiwen.com/subject/tmfloftx.html