设计模式之--单例模式
来源:互联网 发布:苏州大学网络认证自助 编辑:程序博客网 时间:2024/06/04 20:05
最近写关于手机数据库SqlLite创建使用的时候老是遇到数据库未关闭的警告,中间还使用了多线程访问数据库,老是提示数据库被锁定的exception,后来觉得老是打开、关闭数据库太麻烦了,就想用单例模式解决。以下是学习心得:
在某种程度上,单例模式是限制了而非改进了类的创建。单例模式被归结为创建类型模式。他保证了一个类有且仅有一个实例,并且提供了一个访问该实例的全局访问点(static)。在进行程序设计碰到的大量实例中,往往需要保证一个类只能有一个实例。例如在数据库访问的时候。。。
1、利用静态方法创建单例
要创建一个具有唯一实例的类,最简单的方法是在类的内部嵌入一个静态变量,当创建第一个实例时设置该变量,然后当你每次调用构造函数的时候,检查该静态变量。静态变量是仅有一个实例的变量,而不论存在多少个类的实例。为了防止多次实例化类,应该将构造函数设置私有,这样就只能从该类的静态方法内部创建一个实例。然后创建一个实例方法,返回一个实例。
(1)饿汉式:静态初始化方式,在启动加载单例类时就实例化对象,只实例化一次,以后用到的时候就不需要再去实例化了,加载类的时候速度比较慢,但以后获得对象时的速度比较快,该对象从加载到应用结束一直占用资源。
(2) 懒汉式:相当于一个延迟加载机制,即你需要这个对象时候才去实例化,加载类的时候速度比较快,但以后获得对象时的速度比较慢,该对象在整个应用的生命周期只有一部分时间占用资源。面临多线程访问的安全性问题,需要做双重锁定处理才可以保证安全。
双锁机制:
public class Singleton {
private static Singleton instance = null;
private Singleton() { }
public static Singleton getInstance() {
if (instance == null) {//第一次检查
synchronized(Singleton.class) {
//第二次检查
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
0 0
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- java常见面试题收集
- [学习笔记]Java网络编程之UDP通讯
- 第一周:最大子列和问题-算法4:在线处理(作业)
- 黑马程序员———OC基础语法(七)---Foundation框架
- UVa 101 The Blocks Problem
- 设计模式之--单例模式
- 黑马程序员——十分钟让你明白Objective-C的语法(和Java、C++的对比)——黑马 IOS 技术博客
- 链栈
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- java异常处理之throw, throws,try和catch
- [学习笔记]Java网络编程之TCP通讯
- 黄 岩 文 史 资 料 ( 27)
- org.hibernate.LazyInitializationException异常解决方法
- 第三方支付