单例模式

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

一、什么叫单例模式

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

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

二、单例模式的实现

  这里使用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方法时,在方法里面判断是否已经创建了一个实例,若没有,则创建;若有则不创建,直接将实例返回。

 

目录
相关文章
|
8月前
|
设计模式 安全
详细讲解什么是单例模式
详细讲解什么是单例模式
|
1月前
|
设计模式 安全 C#
单例模式详解
单例模式是一种常用的创建型设计模式,确保某个类只有一个实例,并提供一个全局访问点。本文详细介绍了单例模式的定义、特点、适用场景、优缺点及实现代码(C++ 和 C#),并探讨了线程安全的实现细节和与依赖注入的结合使用。
39 0
|
2月前
|
设计模式 安全 C#
C# 单例模式的多种实现
C# 单例模式的多种实现
|
8月前
|
设计模式
单例模式
单例模式
46 0
|
8月前
|
C++
【C++ 单例模式】
【C++ 单例模式】
|
8月前
|
设计模式 安全
【单例模式】—— 每天一点小知识
【单例模式】—— 每天一点小知识
|
设计模式 缓存 Java
php设计模式-单例模式
php设计模式-单例模式
88 1
|
安全 Java
单例模式很简单
《基础系列》
128 0
单例模式很简单
|
SQL 安全 Java
单例模式的理解
谈谈你对单例模式的理解。也算是老生常谈的问题了~~~
1077 1
|
数据采集 设计模式 算法
大佬,人人都说精通的单例模式,你精通了吗
大佬,人人都说精通的单例模式,你精通了吗
95 0
大佬,人人都说精通的单例模式,你精通了吗