黑马程序员_单例模式
来源:互联网 发布:java线程超时关闭 编辑:程序博客网 时间:2024/06/05 17:26
----------------------android培训、java培训、期待与您交流! ----------------------
老规矩先上代码:
class Single{ private static Single s = null; private Single(){} public static Single getInstance() { if(s==null) { } return s; }}2:class Single{ private static Single s = null; private Single(){} public static synchronized Single getInstance() { if(s==null) { s = new Single(); } return s; }}3:class Single{ private static Single s = null; private Single(){} public static Single getInstance() { if(s==null) { synchronized(Single.class) { if(s==null) s = new Single(); } } return s; }}
刚好论坛少有人问及此类问题,我就Ctrl+C一下,吼吼!!
单例模式基本上可以分两种-------(懒汉式、饿汉式)
那么何为单例模式呢??
定义:单例模式确保一个类只有一个实例,自行创建这个实例并向整个系统提供这个唯一的实例。
从定义上看单例模式有这么几个关键特性:
1、一个类只能有一个实例
2、类自己创建这个实例
3、整个系统公用这个实例
详细的分析在下面代码以注释的形式展示
.w3.org/1999/xhtml单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
1:饿汉式
//为何叫他饿汉式呢?因为不管它饿不饿,他都先做好一碗粥,(静态实例化对象)让大家感觉他天天都在饿着(o(∩_∩)o 哈哈,其实我感觉应该叫他勤汉式)
class Single{
private Single(){}//私有的构造函数,这是单例的基本保障,可以思考一下
private static Single s = new Single();//在类的内部 构建一个静态对象,大家都知道,不管几个对象静态对象都至创建一次
public static Single getInstance()//对外提供一个接口,确保整个程序都得到统一对象
{ return s; }}2:懒汉式
//为何叫他懒汉式呢?因为除非他饿的不行了,他才会去做碗粥(调用getInstance()才创建对象,创建的时候还要确定来确定去,没见过这么懒的)
class Single{ private static Single s = null; private Single(){} public static synchronized Single getInstance() { if(s==null)//判断实例是否存在,
{ s = new Single(); } return s; }}3:懒汉安全版
//懒汉有一个BUG就是多线程在并发请求的时候不能保证单例的唯一,大家可以好好思考一下
class Single{ private static Single s = null; private Single(){} public static Single getInstance() { if(s==null) { synchronized(Single.class)//这里加锁就可以有效的防止这个问题
{ if(s==null) s = new Single(); } } return s; }}
----------------------android培训、java培训、期待与您交流! ----------------------
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例模式
- 黑马程序员_单例模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例模式笔记
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- php 递归 实现无限分类 格式化数组
- 新建网站方式
- --利用Linux恢复数据的方法
- Hibernate关联关系配置(一对多、一对一和多对多)
- MyEclipse 9.1优化技巧
- 黑马程序员_单例模式
- 学术搜索引擎大全(转自:http://scienceroom.net/scholar-search-engines)
- EXTJS 中Grid控件的常用代码
- 第十五周实验报告 任务一
- 《精通CSS+DIV》学习笔
- Android自定义捕获Application全局异常
- typede与define 区别
- SQL学习笔记
- 微软笔试题目(一)