Java 设计模式——单例模式
2024-09-27 01:23:40
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;
} }
懒汉式相对于恶汉式来说,代码多一些,但是好处呢就是不占用内存,缺点就是相对恶汉式来说比较耗时。
可能很多人无法理解外层有了一个判断,里面为什么还需要一个判断?这是为了预防高并发的情况,从而达到线程安全。
上面两种,线程都是安全的,选用那种,取决与自己的实际情况。
最新文章
- Java远程方法调用(Remote Method Invocation,RMI)
- 20145227&;20145201 《信息安全系统设计基础》实验三
- BZOJ1503——郁闷的出纳员
- Python核心编程这本书的一些错误
- 完成端口(Completion Port)详解(转)
- web开发中目录路径问题的解决
- Sqli-labs less 51
- 封装sharedPreferences SettingsSPData
- 【LeetCode】228 - Summary Ranges
- javascript调试 console
- bash:command not found
- c++ primer plus 习题答案(2)
- java代码 分解EXCEL(一)
- ubuntu14.04_CUDA8.0_cudnn5.1_Tensorflow配置
- linkin大话数据结构--Collection和Iterator
- 前端笔记之JavaScript(七)深入函数&;DOM那点事
- 元组tuple 可迭代对象
- 浅谈final关键字的用法
- 封装方法公共文件common.js
- Scala学习(八)---Scala继承
热门文章
- C#获取mp3文件时长、解决发布到服务器无法使用问题
- MinDos--操作系统
- lua简单包装
- AES加解密
- spring property标签中的 ref属性和ref 标签有什么不同? 如下:<;property name=";a"; ref=";b"; />;
- Alpha冲刺 - (6/10)
- mysql 统计一个字符在字符串中出现的次数
- 查看JVM内存使用情况
- solr特点三: QueryElevation(编辑结果排序)
- 启动hive命令时指定参数或自定义参数