/**
* 单例模式,通常单例模式在Java语言中,有两种构建方式:
* 懒汉方式:指全局的单例实例在第一次被使用时构建。
* 饿汉方式:指全局的单例实例在类装载时构建。
* @author xw
*/
public class Single {
//懒汉模式
private static Single instance = null;
/**
* 私有的默认构造子,保证外界无法直接实例化
*/
private Single(){
System.out.println("Single()");
}
/**
* 静态工厂方法,返还此类的惟一实例
*/
synchronized public static Single getInstance()
{
if (instance == null)
{
instance = new Single();
}
System.out.println("getInstance()");
return instance;
}
//饿汉模式
private static final Single instance = new Single();
/**
* 私有的默认构造子,保证外界无法直接实例化
*/
private Single(){
System.out.println("Single()");
}
public static Single getInstance(){
System.out.println("getInstance");
return instance;
}
public static void main(String[] args) {
System.out.println("========================================");
System.out.println("下面是使用单例模式,来调用类的实例");
System.out.println("========================================");
for(int i=0;i<6;i++){
int m=i+1;
System.out.println("第 "+m+" 次"+"得到的对象值为 "+Single.instance);
System.out.println("第 "+m+" 次"+"得到的对象值为 "+Single.getInstance());
}
}
}
1、懒汉方式:
========================================
下面是使用单例模式,来调用类的实例
========================================
第 1 次得到的对象值为 null
Single()
getInstance()
第 1 次得到的对象值为 Single@1f6a7b9
第 2 次得到的对象值为 Single@1f6a7b9
getInstance()
第 2 次得到的对象值为 Single@1f6a7b9
第 3 次得到的对象值为 Single@1f6a7b9
getInstance()
第 3 次得到的对象值为 Single@1f6a7b9
第 4 次得到的对象值为 Single@1f6a7b9
getInstance()
第 4 次得到的对象值为 Single@1f6a7b9
第 5 次得到的对象值为 Single@1f6a7b9
getInstance()
第 5 次得到的对象值为 Single@1f6a7b9
第 6 次得到的对象值为 Single@1f6a7b9
getInstance()
第 6 次得到的对象值为 Single@1f6a7b9
2、饿汉方式
Single()
========================================
下面是使用单例模式,来调用类的实例
========================================
第 1 次得到的对象值为 Single@1f6a7b9
getInstance
第 1 次得到的对象值为 Single@1f6a7b9
第 2 次得到的对象值为 Single@1f6a7b9
getInstance
第 2 次得到的对象值为 Single@1f6a7b9
第 3 次得到的对象值为 Single@1f6a7b9
getInstance
第 3 次得到的对象值为 Single@1f6a7b9
第 4 次得到的对象值为 Single@1f6a7b9
getInstance
第 4 次得到的对象值为 Single@1f6a7b9
第 5 次得到的对象值为 Single@1f6a7b9
getInstance
第 5 次得到的对象值为 Single@1f6a7b9
第 6 次得到的对象值为 Single@1f6a7b9
getInstance
第 6 次得到的对象值为 Single@1f6a7b9
分享到:
相关推荐
在提供的压缩包文件中,"单例学习1"和"单例学习2"可能是两个不同的章节或者示例,详细内容可能包括了单例模式的基础理论、不同语言的实现方式、以及如何在实际项目中运用和优化单例。通过阅读这些材料,你可以更深入...
标题所指的知识点为"FICSAM:一种适用于大型适应性系统的单例学习方法"。FICSAM是一种单例学习方法,它被应用于大型适应性系统。单例学习,也称为单样本学习,是一种机器学习方法,其核心思想是利用单一的训练样本来...
在这个"MSChart WinForm 图表单例学习参考用"的资料中,我们将深入探讨如何使用MSChart控件,并通过"WinSamples"这个包含多种示例的文件集,来学习其基本功能和高级特性。 首先,让我们了解什么是单例模式。在软件...
本学习资料将带你深入理解Java中的单例模式。 首先,我们需要了解单例模式的基本结构。传统的单例模式实现通常包括以下几个关键点: 1. **私有化构造函数**:为了防止其他类通过new关键字实例化单例类,我们需要将...
实用Java的单例模式,实用于Java学习者 单例模式 单例模式
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于管理共享资源,如数据库连接、线程池或配置对象。在Java或其他面向对象语言中,单例模式的实现有多种...
在本文中,我们将深入探讨如何在Qt环境中使用多工程调用单例模式,并结合线程锁来确保数据管理的一致性...通过学习这个案例,开发者可以掌握如何在Qt中正确设计和使用单例模式,以及如何在多线程环境下保证数据一致性。
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。...通过学习和实践这些单例模式的实现,我们可以更好地理解和应用设计模式,提升代码的质量和可维护性。
设计模式单例模式学习教案 单例模式概述 单例模式是设计模式中的一种,用于确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。这种模式对对象的创建和访问进行了限制,以确保系统中只有一个实例...
在软件设计模式的世界里,...通过学习和理解这个模式,开发者可以更好地组织代码,提高代码的复用性和可维护性,同时降低系统的复杂性。在实际项目中,可以根据具体需求灵活运用,创造出更高效、更稳定的应用程序。
通过学习这些示例,你可以理解单例模式在实际项目中的应用,并掌握如何在Objective-C中创建和使用单例。 单例模式的优点在于: - **资源管理**:单例模式可以有效地管理资源,例如网络连接、数据库连接,避免资源的...
这个"DesignPattern_SingletonPattern"的Demo可能包含了创建和使用单例的完整代码示例,你可以下载后进行学习和实践。理解并熟练运用单例模式,对于提高iOS应用的性能和代码组织都有很大帮助。在实际开发中,注意...
内含线程池的单例的详细过程,对线程池的学习有着重要参考价值
### 单例模式详解 #### 概述与应用场景 单例模式是一种常用的设计模式,它的主要目的是确保某个类仅有一个实例...通过上述讨论,我们可以看到单例模式在不同场景下的适用性及其潜在问题,并学习到了相应的解决方案。
在项目中,`src`目录可能包含了这些设计模式的源码示例,可以用来学习和理解如何实际应用单例模式和工厂模式。通过阅读和分析这些代码,你可以更深入地理解这两种模式的实现细节及其在实际开发中的作用。同时,也...
单例模式是软件设计模式中的一种经典模式,它在Java编程中被广泛使用。这个模式的主要目的是确保一个类只有一个实例...了解并掌握这些单例模式的实现方式,对于后续学习其他设计模式以及提高代码质量都是非常有帮助的。
在C++编程中,单例模式是一种常用的软件设计模式,它保证了类只有一个实例,并提供一个全局访问点。这种模式通常用于控制共享资源,比如数据库连接...通过不断实践和学习,开发者可以更好地掌握单例模式的运用和优化。
在众多设计模式中,“简单工厂”、“代理模式”和“单例模式”是三种常见的设计模式,它们各自有着明确的使用场景和设计目标。 首先,“简单工厂模式”是一种创建型模式,它定义了一个创建对象的接口,但让决定创建...