java模式之单例模式:
单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。
外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。
一个例子:Windows 回收站。
在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。
两种形式:
1,饿汉式单例类
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
2,懒汉式单例类
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。
分享到:
相关推荐
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式...本视频教程帮助你从新手小白到成为精通JAVA的高手,从软件的安装,功能的介绍和使用,实战演习讲解等各大维度进行详细的教学.
虽然对于新手来说,深入理解设计模式可能有些困难,但可以尝试在项目中应用简单的设计模式,如工厂模式、单例模式,以提高代码的可维护性和可扩展性。 9. **版本控制** 使用Git进行版本控制,可以帮助你跟踪代码...
### Java设计模式的应用 #### 一、引言 在当今快速发展的软件开发领域,Java作为一门功能强大且灵活的语言,不仅拥有丰富的API资源,还能与强大的数据库系统无缝对接。这使得许多开发人员能够以模块化的形式构建...
- **设计模式**:掌握常用的设计模式(如工厂模式、单例模式等)对于提高代码质量和可维护性非常重要。通过学习这些模式,开发者可以编写出更加灵活和可扩展的代码。 - **数据结构与算法**:熟悉基本的数据结构...
《Java设计模式(第二版)》是一本旨在培养读者思维框架的书籍,不仅适合Java编程的新手,也适用于有一定经验的程序员。本书通过详细的案例分析和实践指导,帮助读者深入理解各种设计模式的应用场景及其背后的原理。...
### Java设计模式经典教程知识点概览 #### 一、设计模式概述 设计模式是一种软件设计方法,它为软件开发者提供了一种标准化的方式去解决常见的软件设计问题。设计模式的使用可以提高代码的可读性和可维护性,同时...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的模板或蓝图。设计模式并不直接实现为代码,而是提供了一种描述在某些特定上下文中如何设计类和对象的方式。对于新手和有经验的开发者来说,...
6. **设计模式**:可能使用单例模式来创建唯一的棋盘实例,工厂模式来创建棋子,或者观察者模式来实现棋局状态的实时更新。 7. **测试与调试**:编写单元测试以确保各个功能模块正确工作,使用调试工具来查找和修复...
为什么作为Java新手神器的System.out.println(),到了真正项目开发当中会被唾弃呢?其实只要细细分析,你会发现它的很多弊端。比如不可控制,所有的日志都会在项目上线后照常打印,从而降低运行效率;又或者不能...
Java设计模式是软件工程中的一种最佳实践,它是一种在特定情境下解决常见问题的经验总结。设计模式并不是一种具体的代码或库...因此,无论你是Java新手还是经验丰富的开发者,深入学习和应用设计模式都是非常有价值的。
除了Java技术,还应学习设计模式(如工厂模式、桥梁模式、单例模式等)和软件工程相关的知识,如UML建模、软件生命周期管理等,这些将有助于提升编程思维和项目实施能力。 数据库技术是软件开发中的重要组成部分,...
在实践中,你还会遇到各种设计模式,它们是解决常见编程问题的最佳实践,如单例模式、工厂模式、观察者模式等。此外,理解和使用Java标准库中的API,如 Swing 或 JavaFX 进行图形用户界面(GUI)开发,或者使用JUnit...
2. **设计模式**:这部分内容可能包括了软件工程中的经典设计模式,如工厂模式、单例模式、观察者模式等。设计模式是解决常见软件问题的经验总结,理解和运用设计模式能提高代码的可读性和可维护性。 3. **Spring...
为了提高编程能力,你还需要了解设计模式,例如工厂模式、桥梁模式、单例模式等,以及UML(统一建模语言)来表达软件设计。软件生命周期管理、版本控制工具(如Git)以及单元测试(如JUnit)也是必备技能。 在学习...
《Java 与模式》是阎宏博士撰写的一本经典书籍,深入探讨了Java编程语言与设计模式的结合应用。这本书不仅对于Java初学者,更是对于有一定经验的开发者来说,都是一个宝贵的资源,它揭示了如何在实际开发中有效利用...
最后,笔记可能还会涉及一些设计模式,如单例模式、工厂模式、观察者模式等,这些都是软件设计中常用的最佳实践。 总的来说,"Java超强笔记"是一份全面覆盖Java基础知识的教程,无论你是零基础的新手还是想要巩固...
在技术之外,还需要学习设计模式,如工厂模式、单例模式等,以及UML建模和软件工程方法论,这些将提升你的编程思维和项目管理能力。对于找工作而言,除了Java技能,还需要掌握一些相关的辅助技术,如...