`

Singleton设计模式

阅读更多
希望只生成某个类的一个对象的时候,可以使用该模式来定义类。
如:线程池,日志记录,设备驱动等

一、单线程

示例代码:

class Singleton{
private static Singleton sl;

private Singleton(){}

public static Singleton getInstance(){
if(sl == null){
sl=new Singleton();
}
return sl;

}

}

public class SingletonTest{
public static void main(String[] args){
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2)
System.out.println("Same!");

}



}

执行结果:
C:\javastudy>java SingletonTest
Same!

C:\javastudy>

二、多线程

如果该类用于多线程,那么需要对前面的程序加以改造,也就是让它保证线程安全。

示例代码1:

当多个线程同时执行时,保证不会有两个线程同时进入getInstance方法,从而也就保证了多线程的情况下,也只会生成一个Singleton类的实例。

class Singleton{
private static Singleton sl;

private Singleton(){}

public static synchronized Singleton getInstance(){
if(sl == null){
sl=new Singleton();
}
return sl;

}

}

public class SingletonTest{
public static void main(String[] args){
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2)
System.out.println("Same!");

}



}

执行结果:
C:\javastudy>java SingletonTest
Same!

C:\javastudy>

还有一种方法,不用通过synchronized也能保证线程安全。
因为sl是static型的,所以JVM在装载Singleton类的时候就会创建实例。
从而个线程调用getInstance方法时,只是返回相同的句柄而已,从而实现了线程安全的目的。不过这种方法总是会创建Singleton类的一个实例。因为类一被加载就会创建一个实例。

示例代码2:

class Singleton{
private static Singleton sl=new Singleton();

private Singleton(){}

public static Singleton getInstance(){
return sl;
}

}

public class SingletonTest2{
public static void main(String[] args){
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2)
System.out.println("Same!");

}



}
执行结果:
C:\javastudy>java SingletonTest2
Same!

C:\javastudy>
分享到:
评论

相关推荐

    singleton设计模式java实现及对比

    **Singleton设计模式** Singleton设计模式是软件工程中最常用的设计模式之一,它的主要目的是确保一个类只有一个实例,并提供全局访问点。在Java中,Singleton模式的实现有多种方式,每种方式都有其优缺点,我们将...

    Singleton 设计模式

    Singleton 设计模式是一种常用的设计模式,它用于控制类的实例化过程,确保在整个应用程序中,一个类只有一个实例存在。这种模式常被用于那些需要频繁创建和销毁,且必须全局共享的对象,例如数据库连接、线程池、...

    设计模式之Singleton(单态)

    Singleton设计模式是一种创建型设计模式,它的核心目标是确保在应用程序中只有一个类的实例,并提供一个全局访问点来获取这个唯一实例。这种模式在资源管理、缓存、日志记录、线程池等场景中广泛应用。 ### 单态...

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...

    用UML描述C++设计模式

    本知识点主要以 Adapter、Abstract Factory、Singleton、Bridge 和 Prototype 设计模式为例,结合UML来说明如何使用UML来描述这些设计模式。 **Adapter设计模式** Adapter 模式(适配器模式),主要用于两个不兼容...

    C++中实现Singleton的正确方法

    Singleton设计模式是软件工程中常用的一种模式,它确保一个类只有一个实例,并提供全局访问点。在C++中,实现Singleton模式需要特别注意线程安全、初始化顺序和防止多实例问题。接下来,我们将深入探讨如何正确地在...

    Qt qml Singleton 单例模式

    在Qt的Qml环境中,单例模式是一种设计模式,它允许在整个应用程序中创建一个全局访问点,确保某个类只有一个实例存在。这样的设计模式在需要共享数据或者服务时非常有用,避免了多处创建相同对象导致的数据不一致或...

    最简单的设计模式学习Singleton模式

    ### 最简单的设计模式学习:Singleton模式 #### 一、Singleton模式简介 Singleton(单例)模式是一种常用的软件设计模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在许多场合下非常...

    C#设计模式之Singleton模式

    《C#设计模式之Singleton模式详解》 Singleton模式是软件设计模式中的一种基础模式,它在众多设计模式中占有重要地位,尤其在C#编程中经常被应用。Singleton模式的主要目的是确保一个类只有一个实例,并提供一个...

    Singleton在Java中的应用.doc

    当前文档主要讨论的是Java编程中的Singleton设计模式,这是一种在软件工程中用于控制类的实例化过程,确保在程序运行期间,某类只有一个实例存在的设计模式。Singleton模式在很多场景下非常有用,例如数据库连接池、...

    C#面向对象设计模式纵横谈-1.Singleton 单件(创建型模式)

    Singleton模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。这种模式在需要控制资源的唯一性或者全局访问点时非常有用,比如数据库连接、线程池或者缓存管理等。 ...

    Qt singleton 代码演示

    在Qt框架中,Singleton是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点。Singleton模式在许多场景下非常有用,比如配置管理、...这个简单的代码演示展示了如何在Qt环境中有效地应用Singleton设计模式。

    设计模式-Singleton与Factory

    设计模式-Singleton与Factory

    C++ 实现的singleton 模式

    Singleton模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,例如管理共享资源,如数据库连接池,或者确保某个对象在整个系统中的唯一性。下面我们...

    大话设计模式--Singleton(单例模式)

    单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...

    人人都懂设计模式 人人都懂设计模式

    在本书中,作者罗伟富通过 Python 实现了 23 种经典设计模式,包括 Singleton 模式、Factory 模式、Observer 模式等。这些模式可以帮助开发者更好地解决软件开发中的常见问题,例如对象的创建、结构的设计、行为的...

    设计模式之Singleton

    **设计模式之Singleton(单例模式)** 在软件工程中,设计模式是解决常见问题的模板,它们代表了经过时间考验的最佳实践。Singleton模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点来...

    C++完美实现Singleton模式

    Singleton模式是一种常用的软件设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点。这种模式在系统中经常被用于控制对共享资源(如数据库连接、日志对象等)的访问。正确地实现Singleton模式对于提高代码...

Global site tag (gtag.js) - Google Analytics