Head First 设计模式 —— 单例模式(Singleton)
来源:互联网 发布:淘宝一元拍卖骗局 编辑:程序博客网 时间:2024/06/07 10:01
单例模式简要定义:单例模式确保一个类只有一个实例,并提供一个全局访问点。
1. 如何保证一个类只有一个实例,且这个实例易于被访问?
lazy evaluation:在用到的时候才创建对象。
- 全局变量:
- 使得一个对象可以被访问,全局访问点;
- 但不能防止实例化多个对象;
- 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象。但是,如果这个对象非常耗费资源,而程序在执行的过程中又一直没有用到它;造成浪费;
- 单件模式(singleton)提供了一个全局的访问点,像全局变量一样方便,又没有全局变量的缺点(单件类可以延迟实例化);
2. Java 经典实现
public class Singleton { public static synchronized Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } private Singleton() {} private static Singleton uniqueInstance; }
- 在多线程环境下,有可能在一个线程进入 if 判断之后,还未创建赋值对象之前,又有新的线程进入 if 判断,这样就无法保证对象的唯一性;
- 增加
synchronized
关键字到getInstance
方法,这样使得在每个线程进入该方法之前,要先等候别的线程离开该方法,也就是说,不会有两个线程可以同时进入被synchronized
修饰的方法;
3. 一些特殊需求的单例实现
允许多次 new 创建实例,但每次 new 出来的对象都是同一个对象。
只需将
getInstance()
的实现放进构造函数即可:public class Singleton { public Singleton() { if (self) return; self = this; } private static Singleton self;}
阅读全文
0 0
- Head First 设计模式 —— 单例模式(Singleton)
- Head First 设计模式——单件模式(Singleton Pattern)
- head first 设计模式——(单件模式)
- Head First设计模式 C++实现-Singleton(单件模式)
- <Head First 设计模式>:单件模式:Singleton
- Head First设计模式-单例模式
- Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现
- Head First设计模式C++实现--第五章:单件(Singleton)模式
- Head First 设计模式之单件模式(Singleton Pattern)
- 《Head First 设计模式》学习笔记——单件(例)模式
- Head First设计模式笔记(单例模式)
- 《Head First 设计模式》阅读笔记(五)——单件模式
- 《Head First 设计模式》单件模式
- Head First-设计模式:单件模式
- Head First设计模式—策略模式
- Head First设计模式—观察者模式
- JAVA设计模式——单例(Singleton)模式
- 设计模式——单例(Singleton)模式
- 2017安卓框架排行
- JSP中用JavaScript简单客户端验证
- yellow-Coldplay
- 教你如何用通道来快速抠图的方法
- 我对CSS vertical-align的一些理解与认识(二)
- Head First 设计模式 —— 单例模式(Singleton)
- [Scala]Scala学习笔记六 文件
- 单例设计模式
- CentOS使用EPEL YUM源
- LintCode python 小白-简单题-445余弦相识度
- 矢量图
- caioj1031·递归1(全排列,搜索入门)
- Log4j使用
- 160个crackme之003