Java有很多的设计模式,但是让我们一个个分析出来,可能就一脸蒙逼了,今天就和大家一块来分析一下Java中的一些常用的设计模式。今天先分析单例模式

单例模式的好处

举个例子:有一个类,里面有若干个公共方法,现在我项目中有200个页面会调用到这个类中的方法,怎么办?我们正常的思路可能是获取该类的实例对象,A a = new A(); 然后通过对象a,拿到里面的方法,这种思路是没有问题的,
但是,如果一个项目中有200个页面调用该类,我们是不是就得new 200个对象,这对内存是极大的浪费,但是单例就可以完美的解决了这样的情况。

饿汉式

 package com.mjj.recyclerviewlocation;

 /**
* Created by Administrator on 2017/11/15 0015.
* huangjialin
*/
public class SingletonTest { private static SingletonTest singletonTest = new SingletonTest(); /**
* 饿汉式
* @return
*/
public static SingletonTest getInstance(){
return singletonTest;
}
}

看起来是不是简单粗暴,这种好处就是节省了时间,需要的时候,直接返回,省去了创建的时间,缺点就是一直占用内容。

懒汉式

 package com.mjj.recyclerviewlocation;

 /**
* Created by Administrator on 2017/11/15 0015.
* huangjialin
*/ public class SingletonTest {
private static SingletonTest singletonTest; public SingletonTest() {
} /**
* 懒汉式
* @return
*/
public static SingletonTest getSingletonTest() {
if (singletonTest == null) {
synchronized (SingletonTest.class) {
if (singletonTest == null) {
singletonTest = new SingletonTest();
}
} } return singletonTest;
} }

懒汉式相对于恶汉式来说,代码多一些,但是好处呢就是不占用内存,缺点就是相对恶汉式来说比较耗时。
可能很多人无法理解外层有了一个判断,里面为什么还需要一个判断?这是为了预防高并发的情况,从而达到线程安全。

上面两种,线程都是安全的,选用那种,取决与自己的实际情况。

最新文章

  1. Java远程方法调用(Remote Method Invocation,RMI)
  2. 20145227&20145201 《信息安全系统设计基础》实验三
  3. BZOJ1503——郁闷的出纳员
  4. Python核心编程这本书的一些错误
  5. 完成端口(Completion Port)详解(转)
  6. web开发中目录路径问题的解决
  7. Sqli-labs less 51
  8. 封装sharedPreferences SettingsSPData
  9. 【LeetCode】228 - Summary Ranges
  10. javascript调试 console
  11. bash:command not found
  12. c++ primer plus 习题答案(2)
  13. java代码 分解EXCEL(一)
  14. ubuntu14.04_CUDA8.0_cudnn5.1_Tensorflow配置
  15. linkin大话数据结构--Collection和Iterator
  16. 前端笔记之JavaScript(七)深入函数&DOM那点事
  17. 元组tuple 可迭代对象
  18. 浅谈final关键字的用法
  19. 封装方法公共文件common.js
  20. Scala学习(八)---Scala继承

热门文章

  1. C#获取mp3文件时长、解决发布到服务器无法使用问题
  2. MinDos--操作系统
  3. lua简单包装
  4. AES加解密
  5. spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" />
  6. Alpha冲刺 - (6/10)
  7. mysql 统计一个字符在字符串中出现的次数
  8. 查看JVM内存使用情况
  9. solr特点三: QueryElevation(编辑结果排序)
  10. 启动hive命令时指定参数或自定义参数