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

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

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

在没有使用单例模式情况下是这样的

class A{    private A() {} //构造方法私有化    public static A method() {        return new A();    }    }public class Test {    public static void main(String[] args) {        System.out.println(A.method()); //打印地址        System.out.println(A.method());    }}

这样的话每次都会重新开辟一块堆内存

可以看出是两个地址。

 

而使用了单例模式后

class A{    private static A a; //创建类的私有属性 懒汉模式    private A() {} //构造方法私有化    public static A method() {        if(a == null) { //判断,如果a为空,则创建实例,如果a不为空,则直接返回a            a = new A();        }        return a;    }    }public class Test {    public static void main(String[] args) {        System.out.println(A.method()); //打印地址        System.out.println(A.method());    }}

打印的地址就是同一个地址了,也就是同一块堆内存

单例模式有两种最简单的写法,上面这种是懒汉模式,另一种是饿汉模式

class A{    private static final A a = new A(); //直接在定义属性的时候实例化 饿汉模式    private A() {} //构造方法私有化    public static A method() {        return a;    }    }public class Test {    public static void main(String[] args) {        System.out.println(A.method()); //打印地址        System.out.println(A.method());    }}

输出的地址也是同一块

那么懒汉模式跟饿汉模式有什么区别呢?

懒汉模式

在类加载时,不创建实例,因此类加载速度快,但运行获取对象的速度慢

饿汉模式

在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

转载于:https://www.cnblogs.com/wang95529/p/8228873.html

你可能感兴趣的文章
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>
TP框架代码学习 学习记录 3.2.3
查看>>
doc文档生成带目录的pdf文件方法
查看>>
js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
查看>>
通过前端上传图片等文件的方法
查看>>
在 OC 中调用 Swift 代码
查看>>
Android仿腾讯应用宝 应用市场,下载界面, 有了进展button
查看>>
安卓|五大逆向软件下载
查看>>
5 OK6410裸机调试(不用Jlink)
查看>>
今天实现一个T-sql的小编程,分享给大家,看看就好~(列值赋值)
查看>>
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>
教你用shell写CGI程序
查看>>
窗口 对话框 Pop Dialog 示例
查看>>
ubuntu(centos) server安装vmware tools
查看>>
数据结构之最大不重复串
查看>>
为什么要配置sdk-tools/platform-toools?
查看>>
自己动手开发更好用的markdown编辑器-07(扩展语法)
查看>>
maven dependency:tree中反斜杠的含义
查看>>