博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之单例模式
阅读量:5240 次
发布时间:2019-06-14

本文共 1241 字,大约阅读时间需要 4 分钟。

 单例模式 (Singleton Pattern) 是最简单的设计模式之一。设计思想是确保一个类只有一个实例(对象)。

  1.为了确保只有一个类只有一个实例就要私有化构造函数,防止new的出现;

       2.类本身提供一个获取该类对象的方法,每次返回同一个对象;

 单例模式大致分为两种类型:懒汉式,饿汉式;

废话不多说上代码:

package com.jde.jiangdeenleanpraent.design.single;public class Single {    private Single singgle = null;    /**     * 私有化构造函数,防止new     */    private Single() {    }    /**     * 懒汉式,使用的时候才加载     * 在多线程情况下会有线程安全问题     */    public Single getSinggle() {        if (null == singgle) {            return new Single();        }        return singgle;    }

大家可能已经看出上面那段代码的问题了,在多线程情况下还是有可能创建多个对象,如果一个线程走到new Single();另一个线程已经进入if判断那就会产生多个对象。

现将代码改动如下:

/**     * 懒汉式,多线程情况下线程安全,但是效率低     */    public synchronized Single getSyncSingle() {        if (null == singgle) {            return new Single();        }        return singgle;    }

现在看一下饿汉式的创建方式:

package com.jde.jiangdeenleanpraent.design.single;public class Single {    private static final Single singgle = new Single();    /**     * 私有化构造函数,防止new     */    private Single() {    }    /**     * 饿汉式,初始化就先new出一个对象,每次调用都返回同一对象     */    public Single getSingle() {        return singgle;    }

懒汉式的好处是,对象用的时候才生成,提升项目启动效率,如果不用不会占用内存。

饿汉式的好处是,效率高,但是在初始化的时候就生成对象,如果不用会占用内存,造成内存资源的浪费。

 

转载于:https://www.cnblogs.com/jiangde/p/11208180.html

你可能感兴趣的文章
BNU29140——Taiko taiko——————【概率题、规律题】
查看>>
POJ 2289——Jamie's Contact Groups——————【多重匹配、二分枚举匹配次数】
查看>>
java 得到以后的日期
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
python安装easy_intall和pip
查看>>
AC日记——舒适的路线 codevs 1001 (并查集+乱搞)
查看>>
宏脚本链接数据库
查看>>
HDU1004
查看>>
MySQL高速缓存
查看>>
DropdownList绑定的两种方法
查看>>
价值观
查看>>
数值计算中,浮点类型给我们挖的坑
查看>>
(String)、toString、String.valueOf
查看>>
mongodb命令----批量更改文档字段名
查看>>
python多线程下载网页图片并保存至特定目录
查看>>
《人工智能的未来》--------------经典语录
查看>>
了解循环队列的实现
查看>>
CentOS 简单命令
查看>>
Linux中修改docker镜像源及安装docker
查看>>
数位dp(模板+例题)
查看>>