文档章节

设计模式之--单例模式

Bonjourss
 Bonjourss
发布于 2016/05/11 09:18
字数 616
阅读 3
收藏 0
最近写关于手机数据库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; 
    } 
}

本文转载自:http://blog.csdn.net/yan943789510/article/details/42061181

Bonjourss
粉丝 2
博文 37
码字总数 2312
作品 0
虹口
程序员
私信 提问
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
2018/06/24
0
0
设计模式已经陨落了?

你现在是坐在一个程序员旁边吗?如果是的话,那么在你读下面的段落之前,有一个简单的实验。让他们到一边去,问问他们两个问题并记录下答案。首先问他们“什么是设计模式?”然后再问“说出你...

oschina
2014/03/11
9.5K
69
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
2018/11/06
185
0
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0
JavaScript 的一些设计模式

设计模式的定义:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案 设计模式是前人解决某个特定场景下对而总结出来的一些解决方案。可能刚开始接触编程还没有什么经验的时候,会...

格西南
08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈Adapter适配器模式

一、前言 适配器模式分为两类,所谓“适配”就是适当的配合或者恰当的配合,想一下电源的适配器,完成的作用是将交流电220V转化成不同的直流电压,来对手机、电脑、台灯等充电,如果没有这些...

青衣霓裳
9分钟前
0
0
Kubernetes+Docker+Istio 容器云实践

随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求。近年来,互联网、移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的...

宜信技术学院
11分钟前
0
0
工作流升级登场,云盒子让文件流转更顺畅

云盒子企业网盘作为深耕企业私有云盘领域的老选手, 深谙企业用户对文档管理的细致化追求, 同时从日积月累的各行各业用户口中,收集产品使用体验和痛点, 将“用户体验”贯穿整个网盘产品的设计...

yhz66
17分钟前
0
0
linux:nohup 不生成 nohup.out的方法

nohup java -jar /xxx/xxx/xxx.jar >/dev/null 2>&1 & 关键在于最后的 >/dev/null 2>&1 部分,/dev/null是一个虚拟的空设备(类似物理中的黑洞),任何输出信息被重定向到该设备后,将会石沉...

OSC知行合一
18分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部