美文网首页软件测试
java基础知识之单例模式

java基础知识之单例模式

作者: 明小五 | 来源:发表于2020-07-09 15:35 被阅读0次

什么是单例模式?

只允许一个类存在一个实例。

什么时候使用?

单例模式就是为了减少重复的创建和销毁一个类的对象,所以当您想控制实例数目,节省系统资源的时候使用(如全局使用的类)。

单例的实现步骤:

1、将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例;
2、在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用;如果类保持的引用为空就创建该类的实例,并将实例的引用赋予该类保持的引用。

  • 示例,创建一个SingleObject类:

public class SingleObject {
 
   //创建 SingleObject 的一个对象
   private static SingleObject instance = new SingleObject();
 
   //让构造函数为 private,这样该类就不会被实例化
   private SingleObject(){}
 
   //获取唯一可用的对象
   public static SingleObject getInstance(){
      return instance;
   }
 
   public void showMessage(){
      System.out.println("Hello World!");
   }
}

从 singleton 类获取唯一的对象。

public class SingletonPatternDemo {
   public static void main(String[] args) {
 
      //不合法的构造函数
      //编译时错误:构造函数 SingleObject() 是不可见的
      //SingleObject object = new SingleObject();
 
      //获取唯一可用的对象
      SingleObject object = SingleObject.getInstance();
 
      //显示消息
      object.showMessage();
   }
}

网上百度单例模式存在不同的实现方式,大概分别有如下几种:

1、懒汉模式:线程不安全,延迟初始化。
2、饿汉模式:线程安全。优点:没有加锁,执行效率会提高。缺点:类加载时就初始化,浪费内存。
3、双重锁模式:这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
4、静态内部类单例模式:这种方式只适用于静态域的情况,双检锁方式可在实例域需要延迟初始化时使用。
5、枚举:这种实现方式还没有被广泛采用,但这是实现单例模式的最佳方法

相关文章

  • JAVA设计模式之单例模式

    JAVA设计模式之单例模式

  • 单例模式

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

  • 单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗

    设计模式之单例模式-单例模式的几种实现方式及小案例 本文出处:凯哥Java(wx:kaigejava) 单例模式有...

  • 单例模式安全之反射攻击

    单例模式安全之反射攻击 源码 单例模式这里就不谈了,什么是单例模式可参考七种Java单例模式详解,这里是关于单例模...

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

  • 设计模式详解——单例模式

    本篇文章介绍一种设计模式——单例模式。本文参考文章:《JAVA与模式》之单例模式,如何正确地写出单例模式。 一、单...

  • java设计模式

    一、《JAVA与模式》之工厂方法模式 二、《JAVA与模式》之抽象工厂模式 三、《JAVA与模式》之单例模式 四、...

  • Java中单例模式你用的哪一种?

    一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。 * java实现单例模式的写法...

  • java单例模式

    java模式之单例模式: 一, 什么是单例模式 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这...

  • JAVA设计模式 - 单例模式

    JAVA设计模式 - 单例模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一...

网友评论

    本文标题:java基础知识之单例模式

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