`

Singleton单例模式

    博客分类:
  • J2SE
 
阅读更多
public class SingletonA 
{
	//私有属性
	private static int id = 1;
	
	//SingletonA的唯一实例
	private static SingletonA instance = new SingletonA();
	
	/*
	 * 将构造函数私有,防止外界构造SingletonA实例
	 */
	private SingletonA()
	{
		
	}
	
	/**
	 * 获取SingletonA的实例
	 * @return
	 */
	public static SingletonA getInstance()
	{
		return instance;
	}
	
	/**
	 * 获取实例的id,synchronized关键字表示该方法是线程同步的,即任一时刻最多只能
	 * 有一个线程进入该方法
	 * @return 返回id属性
	 */
	public synchronized int getId()
	{
		return id;
	}
	
	/**
	 * 将实例的id加1
	 */
	public synchronized void nextId()
	{
		id++;
	}
}

public class SingletonB 
{
	//私有属性
	private static int id = 1;
	//SingletonB的唯一实例
	private static SingletonB instance = null;
	
	/*
	 * 将构造函数私有,防止外界构造SingletonB实例
	 */
	private SingletonB()
	{
		
	}
	
	/**
	 * 获取SingletonB的唯一实例,使用synchronized关键字保证某一时刻只有
	 * 一个线程调用方法
	 * @return
	 */
	public static synchronized SingletonB getInstance()
	{
		//如果instance为空,便创建一个新的SingletonB实例,否则,返回已有的实例
		if(instance==null)
		{
			instance = new SingletonB();
		}
		return instance;
	}
	
	public synchronized int getId()
	{
		return id;
	}
	
	public synchronized void nextId()
	{
		id++;
	}
}

/**
 * 模式名称:单例模式
 * 模式特征:只能创建该类的一个实例
 * 模式用途:提供一个全局共享类实例
 */
public class SingletonTest 
{
	public static void main(String args[])
	{
		SingletonA a1 = SingletonA.getInstance();
		SingletonA a2 = SingletonA.getInstance();
		
		System.out.println("用SingletonA实现单例模式");
		System.out.println("调用nextId方法前:");
		System.out.println("a1.id=" + a1.getId());
		System.out.println("a2.id=" + a2.getId());
		a1.nextId();
		System.out.println("调用nextId方法后:");
		System.out.println("a1.id=" + a1.getId());
		System.out.println("a2.id=" + a2.getId());
		
		SingletonB b1 = SingletonB.getInstance();
		SingletonB b2 = SingletonB.getInstance();
		System.out.println("用SingletonB实现单例模式");
		System.out.println("调用nextId方法前:");
		System.out.println("b1.id=" + b1.getId());
		System.out.println("b2.id=" + b2.getId());
		b1.nextId();
		System.out.println("调用nextId方法后:");
		System.out.println("b1.id=" + b1.getId());
		System.out.println("b2.id=" + b2.getId());
	}
}
分享到:
评论

相关推荐

    C++实现Singleton单例模式

    C++实现Singleton单例模式 本文档将详细介绍如何使用C++语言实现设计模式中的单例模式。单例模式是一种常用的设计模式,它可以确保一个类只能实例化一次。 单例模式的定义: 单例模式是一种创建型模式,它可以确保...

    Qt qml Singleton 单例模式

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

    singleton单例模式1

    "singleton单例模式1" 单例设计模式是软件设计模式中的一种,目的是确保某个类只能有一个实例,并提供一个全局的访问点来访问这个实例。 首先,单例模式的要点是:① 某个类只能有一个实例。构造器私有化。② 它...

    singleTon单例模式的创建

    ### SingleTon单例模式的创建 #### 一、单例模式概述 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁实例化然后销毁的对象,或者创建对象需要...

    Singleton单例模式.zip

    本资料包“Singleton单例模式.zip”提供的是C#实现单例模式的源代码示例。 单例模式的核心在于限制类的构造函数访问,防止外部代码随意创建实例。通常,我们通过以下几种方式来实现C#中的单例模式: 1. 饿汉式...

    java Singleton单例模式

    Java中的Singleton(单例模式)是一种常用的软件设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中特别有用,因为它可以节省系统资源,例如数据库连接或者线程池...

    Singleton 单例模式

    Singleton 单例模式是软件设计模式中的一种,它限制了类的实例化过程,确保一个类在整个系统中只有一个实例存在。这种模式常用于系统资源管理,比如数据库连接、线程池或者缓存服务等,因为这些资源往往需要全局共享...

    Singleton 单例模式的介绍以及解析

    单例模式是软件设计模式中的一种经典模式,它在Java、C++、Python等众多编程语言中被广泛应用。单例模式的主要目的是确保一个类只有一个实例,并提供全局访问点,这样可以有效地控制资源的共享,避免因为多次实例化...

    Android Singleton单例模式Demo

    在Android开发中,单例模式(Singleton)是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式在管理共享资源、控制并发以及减少对象创建的开销等方面非常有用。本篇文章将深入讲解...

    singleton单例模式

    - `singleton.cpp`包含了单例类的实现,可能包括了上述的某一种或多种单例模式的实现。 - `main.cpp`是程序的入口,可能会在其中调用单例对象进行测试。 - `mainwindow.cpp`和`mainwindow.h`可能是UI界面的实现和...

    Singleton(单例模式)

    在Java应用中,单例对象能保证在一个...3、有些像交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了,只有使用单例模式,才能保证核心交易服务器独立控制整个流程。 CSDN代码的详细解释。

    Singleton pattern单例模式应用

    ### Singleton Pattern 单例模式应用详解 #### 一、单例模式概述 单例模式(Singleton Pattern)是一种常用的软件设计模式,在系统中确保某个类只有一个实例,并提供一个全局访问点。这种模式通常用于控制资源的...

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

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

    使用设计模式中的Singleton单例模式来开发iOS应用程序

    单例模式(Singleton Pattern)是软件设计中的一种常用设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在iOS应用程序开发中,单例模式被广泛使用来管理应用状态、配置信息、设备信息等。...

    设计模式C++学习之单例模式(Singleton)

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...

    单例模式(singleton)

    单例模式是软件设计模式中的一种,它的核心思想是确保一个类在整个系统中只有一个实例,并提供一个全局访问点。在Java或类似编程语言中,单例模式常常被用来管理资源,比如数据库连接、线程池或者配置信息,因为这些...

    使用C++11实现线程安全的单例模式

    这个程序会输出"Both references point to the same singleton instance.",证明了单例模式的正确实现。 总结来说,C++11通过`std::mutex`和`std::call_once`等工具,为实现线程安全的单例模式提供了强大支持。这种...

    C#单例模式详解 C#单例模式详解C#单例模式详解

    单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...

    单例模式 Singleton Pattern

    ### 单例模式 Singleton Pattern #### 概述 单例模式是一种常见的设计模式,属于创建型模式之一。这种模式的核心在于确保某个类只有一个实例存在,并且提供一个全局访问点来获取该实例。单例模式在Java开发中尤其...

    java单例模式实例

    单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...

Global site tag (gtag.js) - Google Analytics