单例模式的概念:
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
关键点:
1)一个类只有一个实例 这是最基本的
2)它必须自行创建这个实例
3)它必须自行向整个系统提供这个实例
----------------------------------------------------------------------------------------------------------------------------------------------------
两种实现方式:
1 懒汉模式(类加载时不初始化)
复制代码
package Singleton;
public class LazySingleton {
//懒汉式单例模式
//比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
private static LazySingleton intance = null;//静态私用成员,没有初始化
private LazySingleton()
{
//私有构造函数
}
public static synchronized LazySingleton getInstance() //静态,同步,公开访问点
{
if(intance == null)
{
intance = new LazySingleton();
}
return intance;
}
}
复制代码
关键点:(代码注释上已给出)
1)构造函数定义为私有----不能在别的类中来获取该类的对象,只能在类自身中得到自己的对象
2)成员变量为static的,没有初始化----类加载快,但访问类的唯一实例慢,static保证在自身类中获取自身对象
3)公开访问点getInstance: public和synchronized的-----public保证对外公开,同步保证多线程时的正确性(因为类变量不是在加载时初始化的)
优缺点见代码注释。
2 饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)
复制代码
package Singleton;
public class EagerSingleton {
//饿汉单例模式
//在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化
private EagerSingleton()
{
//私有构造函数
}
public static EagerSingleton getInstance() //静态,不用同步(类加载时已初始化,不会有多线程的问题)
{
return instance;
}
}
复制代码
关键点:(代码注释已写)
1)私有构造函数
2)静态私有成员--在类加载时已初始化
3)公开访问点getInstance-----不需要同步,因为在类加载时已经初始化完毕,也不需要判断null,直接返回
优缺点见代码注释。
分享到:
相关推荐
"QT_C++单例模式懒汉+饿汉.rar"是一个压缩包,包含了关于C++在QT环境下实现单例模式的实例,分为懒汉式和饿汉式两种实现方式。 首先,我们来看一下单例模式的基本原理。单例模式通常用于那些需要频繁实例化然后销毁...
单例模式有两种常见的实现方式:懒汉式和饿汉式。 ### 懒汉式单例 懒汉式单例,顾名思义,是一种延迟初始化的单例模式,即在第一次调用时才创建实例。这种方式的优点是在需要的时候才创建对象,节省了内存资源;...
单例模式有多种实现方式,其中最常见的是懒汉模式和饿汉模式。 **懒汉模式** 是指在第一次需要时才创建单例对象,延迟了初始化的时间,因此称为“懒汉”。懒汉模式的主要优点是如果单例对象始终未被使用,那么就...
在这个场景中,我们将探讨如何使用单例模式来创建一个学生管理系统,主要涉及“饿汉式”和“懒汉式”两种实现方式。 **饿汉式单例** 饿汉式单例在类加载时就完成了实例化,因此它是线程安全的。这种方式保证了单例...
"singleton单例模式1" 单例设计模式是软件设计模式中的一种,目的是确保某个类只能有一个实例,并提供一个全局的访问点来访问这个实例。 首先,单例模式的要点是:① 某个类只能有一个实例。构造器私有化。② 它...
本资料包“Singleton单例模式.zip”提供的是C#实现单例模式的源代码示例。 单例模式的核心在于限制类的构造函数访问,防止外部代码随意创建实例。通常,我们通过以下几种方式来实现C#中的单例模式: 1. 饿汉式...
Java中的Singleton(单例模式)是一种常用的软件设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中特别有用,因为它可以节省系统资源,例如数据库连接或者线程池...
本文将详细讨论四种常见的单例实现方式:饿汉模式、懒汉模式、双重检查锁定(DCL)单例模式以及枚举单例。 1. **饿汉模式**: 饿汉模式是在类加载时就完成了实例化,避免了线程同步问题。这种方式简单且安全,但...
单例模式的核心在于限制类的实例化,通常通过私有化构造函数和静态工厂方法来实现。当类的实例第一次被请求时,会创建一个对象并将其存储在一个静态变量中,后续的请求都会返回这个已经创建的对象,而不是创建新的...
实现单例模式主要有两种方式:饿汉式和懒汉式。 ### **饿汉式单例模式** 饿汉式单例模式在类加载时就完成了实例化,因此也称为静态初始化。这种方式保证了线程安全,但可能会造成不必要的资源浪费,因为即使未使用...
除了DCL之外,还有一种饿汉式单例模式,它在类加载时就完成了实例化,虽然牺牲了懒加载的特性,但提供了更高的效率和线程安全性。不过,对于那些不需要立即加载且生命周期较长的单例对象,懒汉式更加适用。 在实际...
本文将讨论两种常见的单例实现方式:懒汉式和饿汉式,以及它们的线程安全问题。 1. 教科书中的单例模式 经典的单例模式实现通常包括以下几个关键点: - 构造函数设为私有(private)以防止外部直接创建实例。 - ...
本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式主要用于控制类的实例化过程,防止因为多个实例导致的资源...
除了上述提到的饿汉式和懒汉式单例模式外,还有其他几种实现方式,如枚举单例、内部类单例等,每种方式都有其适用场景和优劣。 #### 结论 单例模式作为软件工程中的一种基本设计模式,其核心在于控制类的实例化...
Singleton 单例模式是软件设计模式中的一种,它限制了类的实例化过程,确保一个类在整个系统中只有一个实例存在。这种模式常用于系统资源管理,比如数据库连接、线程池或者缓存服务等,因为这些资源往往需要全局共享...
单例模式有两种常见的实现方式:饿汉模式和懒汉模式。 1. **饿汉模式**: - 饿汉模式的特点是在类加载时就完成了初始化,因此线程安全。它的实现方式是通过静态常量或者静态代码块来立即创建单例对象。 ```java ...
- 控制实例化过程:可以控制实例的创建时机和方式,比如在特定条件下初始化。 然而,单例模式也有一些缺点: - 打破了单一职责原则,因为单例类不仅要处理业务逻辑,还要管理自己的实例化。 - 单例模式难以进行单元...
3. **双重检查锁定(DCL,Double Check Locking)单例模式**:结合了饿汉模式和懒汉模式的优点,既延迟了初始化,又保证了线程安全。在多线程环境下,只有在`instance`为`null`时才会进入同步块,避免了不必要的同步...
本压缩包提供了多种单例实现方式的Java代码示例,包括常见的懒汉式、饿汉式、双重检查锁定、静态内部类和枚举等方式。下面将详细解释这些实现方法。 1. **饿汉式(静态常量)** 饿汉式单例在类加载时就初始化,...