单例模式

简介: 一、什么叫单例模式   单例模式是一种常用的软件设计模式。该模式的作用就是产生一个唯一的实例。也就是说通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

一、什么叫单例模式

  单例模式是一种常用的软件设计模式。该模式的作用就是产生一个唯一的实例。也就是说通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。单例模式有如下特点: 

  • 单例类只可有一个实例
  • 单例类必须自己创建自己这惟一的实例
  • 单例类必须给所有其他对象提供这一实例

二、单例模式的实现

  这里使用java实现。安装创建的方式不同,单例模式有2种实现。一种被称为饿汉式,另外一种被称为懒汉式。

 1、饿汉式

 

 1 package com.test.demo;
 2 
 3 /**
 4  * 单例模式
 5  * 
 6  */
 7 public class Singleton {
 8     private Singleton() {//私有化构造方法,禁止类外调用
 9     }
10 
11     private static Singleton singleton = new Singleton();
12 
13     public static Singleton getInstance() {//static 直接在通过类名调用
14         return singleton;
15     }
16 
17     public static void main(String[] args) {
18         System.out.println(Singleton.getInstance() == Singleton.getInstance());
19     }
20 }

  饿汉式,当类被加载后,立即创建一个实例。

 2、懒汉式

 

 1 package com.test.demo2;
 2 
 3 /**
 4  * 单例模式
 5  * 
 6  */
 7 public class Singleton {
 8     private Singleton() {//私有化构造方法,禁止类外调用
 9     }
10 
11     private static Singletonsingleton;
12   
13     public static synchronized Singleton getInstance() {//static 直接在通过类名调用加锁防止两个线程同时进入的时候创建两个不一样的实例
14         if (singleton == null)
15             singleton = new Singleton2();
16         return singleton;
17     }
18 
19     public static void main(String[] args) {
20         System.out,
21                 .println(Singleton.getInstance() == Singleton.getInstance());
22     }
23 }

 

  懒汉式,当类被加载后,先不创建。当调用getInstance方法时,在方法里面判断是否已经创建了一个实例,若没有,则创建;若有则不创建,直接将实例返回。

 

目录
相关文章
|
6月前
|
设计模式 安全 测试技术
【C++】—— 单例模式详解
【C++】—— 单例模式详解
|
6月前
|
设计模式 安全
详细讲解什么是单例模式
详细讲解什么是单例模式
|
30天前
|
C++
C++单例模式
C++中使用模板实现单例模式的方法,并通过一个具体的类A示例展示了如何创建和使用单例。
29 2
|
3月前
|
存储 设计模式 测试技术
单例模式
单例模式
|
设计模式 安全 Java
单例模式的运用
单例模式的运用
42 0
|
安全 Java
原来要这么实现单例模式
原来要这么实现单例模式
55 0
|
设计模式 前端开发
关于单例模式我所知道的
关于单例模式我所知道的
58 0
关于单例模式我所知道的
找对象需要单例模式吗?
单例模式的类只提供私有的构造函数
|
设计模式 缓存 JSON
没那么简单的单例模式
没那么简单的单例模式
125 0
没那么简单的单例模式
|
设计模式 安全 Java
回顾一下单例模式
回顾一下单例模式