单例模式
来源:互联网 发布:华数传媒网络怎么退订 编辑:程序博客网 时间:2024/06/07 03:05
单例模式作用:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式应该是23中设计模式中最简单的一种模式了。它有一下几个要素:
1.私有的构造方法。
2.指向自己实例的私有静态引用。
3.以自己实例为返回值的静态的公有的方法。
单例模式应该是23中设计模式中最简单的一种模式了。它有一下几个要素:
1.私有的构造方法。
2.指向自己实例的私有静态引用。
3.以自己实例为返回值的静态的公有的方法。
单例模式根据实例化对象时机的不同分为两种:饿汉式与懒汉式。
饿汉式单例在类被加载的时候,就实例化一个对象交给自己的引用;
而懒汉式在调用取得实例方法时才会实例化对象。
单例模式的优点:
1.在内存中只有一个对象,节省内存空间。
2.避免频繁的创建销毁对象,可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。
应用场景:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但是又经常用到的对象。
3.有状态的工具类对象。
4.频繁访问数据库或文件的对象。
5.以及其他所有要求只有一个对象的场景
代码如下:
1.饿汉式
<pre name="code" class="java"><span style="font-size:14px;">public class Single{ private static Single single = new Single(); //创建本类对象,并私有化。 private Single(){} //私有化构造函数,让外部不能访问。 public static Single getInstance(){ //对外提供方法获得本类对象。 return single; }}</span>
懒汉式①——一般
public class Single{ private static Single single = null;//不建立对象 private Single(){} public static synchronized Single getInstance(){ //当方法被调用时才创建对象。 if(single == null) //先判断是否为空 { single = new Single(); } return single; }}
懒汉式②——利用双重判断,提高效率
public class Single{ private static Single single = null;//不建立对象 private Single(){} public static Single getInstance(){ //当方法被调用时才创建对象。 if(single == null) //先判断是否为空 {synchronized(Single.class)if (single == null){single = new Single();} } return single; }}
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
开发时,常用第一种,但是面试的时候,通常会考第二种。
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- NSHashTable and NSMapTable
- 迅发网络教你怎么做网站优化!
- Xcode6:The file couldn’t be opened because you don’t have permission to view it
- Jquery跳出each循环
- http和https有什么区别
- 单例模式
- jni断点调试
- Oracle中的date与timestamp
- qsort(),sort()排序函数
- Lotus Notes 8.5.1 Sametime无法传送文件,进度条0
- 插入排序
- 查看linux库文件32位还是64位
- 练习题
- Java中Date和Timestamp的区别