学习java设计模式之单列模式---笔记

Java设计模式之单例模式详解
在我们平时Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过。我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以这篇文章对单例模式做了详解。
一、单例模式定义:
有一些对象其实我们只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。事实上这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常、资源使用过量,或者不一致的结果。
二、首先学习单例模式—饿汉式(静态变量),代码如下:

1.新建一个Singletion.java类,用于创建Singletion类的唯一实例、完成构造器私有化以及静态方法的公有化。

在这里插入图片描述
2.我们可以通过主函数进而测试一下饿汉式(静态变量)的加载模式,测试代码如下:
在这里插入图片描述
3.饿汉式(静态变量)优缺点说明:
(1)写法比较简单,在类装载的时候就完成实例化。避免了线程同步问题。
(2)在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费。
(3)这种方式基于classloader机制避免了多线程的同步问题,不过,instance在类装载的时候就实例化,在单例模式中大多是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定其他的方式(或者其他的静态方法)导致的类装载,这时候初始化instance就没有达到lazy loading的效果。

4.咱们最后总结一下关于饿汉式(静态变量),用一句话概括就是:
这种单例模式可用,可能会造成内存浪费。

发布了23 篇原创文章 · 获赞 15 · 访问量 6288

猜你喜欢

转载自blog.csdn.net/xiaoleilei666/article/details/101124870
今日推荐