一、简介
1.定义
保证一个类仅有一个实例,并提供一个获取实例的全局访问点(方法|入口)。
2.什么时候用?
顾名思义,我们需要系统中只存在一个实例对象时使用,注意如果同时实现了原型模式,可能会破坏单例。
二、Java实现
1.懒汉模式&饿汉模式
懒汉模式:只有在调用单例模式类提供的入口方法时才实例化对象(这种模式下,只要调用到了该类的静态方法,不管是不是要获取实例,这个单例对象也会被创建)
饿汉模式:未调用单例类的入口方法就已经实例化了对象,不管后面有没有用(像饿汉一样迫不及待 O(∩_∩)O哈哈~)
2.实例
假设我们有一个系统配置类对象,希望整个系统只有一个实例,下面是两种模式的简单实现(多线程中需要注意懒汉模式实现的线程安全,这里未做处理)
public class SystemConfig { private static SystemConfig ins = new SystemConfig(); private SystemConfig() { } public static SystemConfig newInstance() { return ins; } }
public class SystemConfig_Lazy { private static SystemConfig_Lazy ins = null; private SystemConfig_Lazy() { } public static SystemConfig_Lazy newInstance() { if (ins == null) { ins = new SystemConfig_Lazy(); } return ins; } }
相关推荐
《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...
Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...
第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...
《Java与模式》系列教程是深入理解Java编程和设计模式的重要资源,这部分涵盖了第十九到第二十一章的内容。在Java编程中,设计模式是解决常见问题的成熟解决方案,它们是经验丰富的开发者的智慧结晶,可以帮助我们写...
java8 源码 ...2、添加设计模式代码实践,装饰模式decorator,工厂模式factory,单例模式singletonInstance ####第七周完成工作 1、第11章CompletableFuture:组合式异步编程代码实战 2、添加包desig
每个章节如`ch2`、`ch3-ch6`、`ch7`可能分别对应Spring的不同设计模式或特定主题的深入探讨,例如第二章可能主要讲解依赖注入,第三到第六章可能涉及AOP、MVC等,第七章可能是高级主题或实战案例。通过研究这些源...
在Java面向对象编程中,单实例模式(也常称为单例模式或Singleton模式)是一种常用的创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这种模式在很多场景下非常有用,例如管理共享...
### Cocoa设计模式详解 #### 一、概述 《Cocoa设计模式》是由Erik M. Buck和Donald A. Yacktman共同编写的专著,该书深入探讨了Cocoa框架中采用的各种面向对象设计模式及其实践应用。Cocoa框架是苹果公司为Mac OS ...
10. **设计模式**:在项目中,可能会应用到一些常见的设计模式,如单例模式(Singleton)、工厂模式(Factory),让代码更易于理解和维护。 这个项目通过实际操作,让学习者在实践中学习和巩固Java OOP的理论知识,...
### 第二章:结构型模式 #### 2.1 适配器模式(Adapter) 适配器模式将一个类的接口转换成客户希望的另外一个接口。适配器让原本由于接口不兼容而不能一起工作的那些类可以一起工作。 #### 2.2 桥接模式(Bridge)...
--第二章:简单工厂 本质:选择实现 --第三章:外观模式(Facade) 本质:封装交互,简化调用 --第四章:适配器模式(Adapter) 本质:转换匹配,复用功能 --第五章:单例模式(Singleton) 本质:控制实例数目 --第六章:...
#### 第二章 创建/销毁对象 ##### 用静态工厂方法代替构造器 在面向对象编程中,对象的创建通常是通过构造器来完成的。然而,在某些情况下,使用静态工厂方法来创建对象可能会更加灵活和高效。 **静态工厂方法的...
第1章 Java基础 1.1 转换基本数据类型 1.2 Java的运算符 1.3 控制程序的流程 1.4 计算阶乘 1.5 实现命令行程序 第2章 Java面向对象程序设计 2. 1 复数类 2. 2 equals.chashCode...
8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车...
8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器...
8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式...
此外,对象池设计模式也是管理对象的一种策略,它预先创建一组对象,当需要时可以从池中获取,而不是每次需要时都新建,从而减少对象的创建和销毁开销。 现在,我们来看压缩包中的文件"**w12.chm**",这是一个帮助...