设计模式的创建模式中前面说了工厂模式,这里我们继续来讨论设计模式中另一个创建模式—单例模式。
单例模式(Singleton)是指确保一个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例。这个类我们也称它为单例类。单例模式的使用在现实世界里很多,比如我们常见的打印机打印的作业队列,一个没打印完,那么只有在队列等待;windows回收站,windows视窗里回收站有且只有一个实例。
单例模式的目的就是有且只提供一个实例,所以它有一下几个特点:
1、单例类只能有一个实例;
2、单例类必须自己创建自己惟一的实例;
3、单例类必须给所有其他对象提供这一实例。
单例模式的一般结构如下:
上图可以看出,单例类自己提供一个实例给自己。
由于java语言的特点在单例的实现上有不同的做法,主要体现在单例类如何实例化自己上。基于上面三个特点我们可以有两种创建单例类实例的方法,第一个是提前创建好,用的时候直接使用;第二种是等到使用的时候再创建实例,业界称第一种为饿汉式,后者成为懒汉式。
饿汉式单例设计模式
packagecom.pattern.singleton; /** * *【描述】:饿汉式单例模式 *【作者】:alaric *【时间】:Jul 8, 2012 *【文件】:com.pattern.singleton.HungrySingleton.java * */ publicclass HungrySingleton { //创建实例 private static final HungrySingleton singleton =new HungrySingleton(); //私有构造子 private HungrySingleton(){} //静态工厂方法 public static HungrySingleton getInstance(){ return singleton; } }
懒汉式单例设计模式
packagecom.pattern.singleton; /** * *【描述】:懒汉式单例模式 *【作者】:alaric *【时间】:Jul 8, 2012 *【文件】:com.pattern.singleton.LazySingleton.java * */ public class LazySingleton { //创建实例 private static LazySingleton singleton =null; //私有构造子 private LazySingleton(){} //静态工厂方法 synchronized public static LazySingleton getInstance(){ //如果为空就new一个实例 if(singleton==null){ singleton =new LazySingleton(); } return singleton; } }
通过上面代码,可以看出他们之间的区别,相对而言单例设计模式比较简单,我们只要记住它的特点就可以简单掌握了。
设计模式系列目录:
相关推荐
单例模式是软件设计模式中的一种经典模式,其主要目的是控制类的实例化过程,确保在任何情况下,一个类只有一个实例存在。这种模式通常用于管理共享资源或者全局配置,例如数据库连接池、线程池、日志服务等。在Java...
**设计模式——单例模式** 在软件工程中,设计模式是一种在特定场景下解决常见问题的标准方案,可以被复用并提升代码质量。单例模式是设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。这种模式...
单例模式是软件设计模式中的一种,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,比如控制共享资源、管理系统级别的服务或者简化对象间的交互。单例模式的核心在于...
单例模式是软件设计模式中的一种经典模式,它保证了类在任何情况下都只有一个实例存在。这个模式在很多场景下非常有用,例如控制全局资源、管理配置信息等。本文将详细探讨单例模式的懒汉式实现,并结合源码进行解析...
【Java设计模式——单例模式】 单例模式是一种常见的软件设计模式,它的核心思想是确保在应用程序的整个生命周期中,某个类只有一个实例存在。这种模式主要用于控制类的实例化过程,减少系统资源的消耗,提高系统...
以上只是部分Java设计模式的介绍,实际的“DesignPatterns”压缩包可能包含了这些模式的源代码实现,通过阅读和学习这些代码,开发者可以更好地理解和运用设计模式,提升代码质量。同时,结合博主提供的博客链接,...
本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...
在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...
### Java设计模式——单例模式详解 #### 一、单例模式概述 单例模式是设计模式中的一个重要组成部分,属于创建型模式之一。其主要作用是确保某个类仅有一个实例存在,并提供一个全局访问该实例的方法。这在很多场景...
本次我们将深入探讨两种设计模式——单例模式和装饰模式,它们在Java编程中都有着广泛的应用。 首先,让我们来理解“单例模式”。单例模式是一种创建型设计模式,其核心思想是保证一个类只有一个实例,并提供一个...
**设计模式——单例模式** 单例模式是一种广泛应用于软件设计中的创建型设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这样做的好处在于控制共享资源的访问,比如线程安全的数据库连接池...
通过深入学习《设计模式——Java语言中的应用》,开发者能够更好地理解和应用这些模式,从而编写出更加高效、可扩展的Java程序。无论是初级开发者还是经验丰富的程序员,都应该不断探索和实践设计模式,以提升自己的...
### Java设计模式经典教程知识点概览 #### 一、设计模式概述 设计模式是一种软件设计方法,它为软件开发者提供了一种标准化的方式去解决常见的软件设计问题。设计模式的使用可以提高代码的可读性和可维护性,同时...
本资源“JAVA设计模式.chm”聚焦于一种重要的设计模式——工厂模式。工厂模式是面向对象设计中的一种经典模式,它在Java程序中扮演着核心角色。 工厂模式的核心思想是提供一个创建对象的接口,但让实现这个接口的类...
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
《Java与模式——源码》这个主题涉及到的是Java编程语言中的设计模式应用,以及如何通过源代码来理解和学习这些模式。设计模式是软件工程中的一种最佳实践,它们是解决常见问题的经验总结,使得代码更易读、易维护、...
"大牛解读Java设计模式.pdf"这本书籍,作为这个主题的载体,很可能是由资深专家撰写,用生动的语言和实例帮助读者理解抽象的设计概念,从而提升他们的编程技能。无论你是初学者还是有经验的开发者,都能从中受益匪浅...