Java单例模式的写法及作用介绍

Java单例模式的写法及作用介绍_第1张图片

在创建型设计模式中,我们第一个学习的是单例模式(Singleton Pattern),这是设计模式中最简单的模式之一。

单例是什么意思呢?

单例就是单实例的意思,即在系统全局,一个类只创建一个对象,并且在系统全局都可以访问这个对象而不用重新创建。

一、单例模式的基本写法

单例模式示例代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

public class Singleton {

  

  //    Singleton类自己持有这个单例对象

   private static Singleton instance = new Singleton();

  

   //   构造方法设置为私有,避免在Singleton类外部创建Singleton对象

   private Singleton() {}

  

   //   提供获取单例对象的静态方法

   public static Singleton getInstance() {

      return instance;

   }

  

   public void hello() {

      System.out.println("Hello!");

   }

}

使用:

1

2

Singleton obj = Singleton.getInstance();

obj.hello();

分析SingleObject类的特征:

  • SingleObject类的构造方法是私有的,这样可以保证只能在SingleObject类内部才能创建对象,而无法在类外部创建SingleObject对象。
  • SingleObject类中有一个instance成员属性,它用来持有这个SingleObject对象。
  • SingleObject类提供了一个静态方法getInstance,它可以让我们在任何可以访问到SingleObject类的地方,都可以使用SingleObject.getInstance()来获取到这个SingleObject对象。

二、单例模式的作用

单例模式有什么用呢?

1. 控制对象的数量

当你编写了一个类提供给其他人调用时,对方看到是一个类,很有可能第一反应是尝试new一下。

你自己编写的类你自己是清楚如何使用的,在整个系统内这个类只需要创建一个对象就够了,但对方可能并不清楚。

这时候你可以把这个类编写为单例形式,把构造方法私有化,让对方无法通过new来创建对象,只能使用getInstance来获取。

这个模式可以帮助你有效的控制对象的数量,毕竟,有的类其内部实现复杂,如果频繁创建销毁对象,可能还是很耗费服务器资源的。

2.全局访问

单例模式的特点是单例类自己持有这个单例对象,并且提供一个静态方法可在全局获取到这个单例对象。

如果没有单例模式的情况下,我们一般是在代码A处创建这个对象,在代码B处如果也要使用这个对象,就需要将这个对象进行参数传递。为了避免传来传去,我们可能会写个Holder类,把这个对象放在Holder的成员变量中。

而单例模式的这个优点是,我们可以避免这样的困扰,直接从单例类中获取。

来源:https://www.weidianyuedu.com

你可能感兴趣的:(编程语言,java,单例模式,java,开发语言)