java设计模式学习之单例模式
来源:互联网 发布:数据炼金 编辑:程序博客网 时间:2024/05/17 06:24
一、概述
在实际开发中,有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等,如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等。
单例模式保证整个应用中某个实例有且只有一个
单例模式分为饿汉模式与懒汉模式
二、案例代码
1.恶汉模式Singleton.java
package com.czhappy.designpattern.singleton;/** * * @ClassName: Singleton 恶汉模式 * @Description: 单例模式,保证应用程序中某个实例有且仅有一个 * @author chenzheng * @date 2017-1-13 上午11:44:26 */public class Singleton { //创建唯一的一个实例 private static Singleton instance = new Singleton(); //将构造方法私有,不让外部直接创建对象 private Singleton(){ } //提供一个用于获取实例的方法 public static Singleton getInstance(){ return instance; }}
2.懒汉模式Singleton2.java
package com.czhappy.designpattern.singleton;/** * * @ClassName: Singleton 懒汉模式 * @Description: 单例模式,保证应用程序中某个实例有且仅有一个 * @author chenzheng * @date 2017-1-13 上午11:44:26 */public class Singleton2 { //创建唯一的一个实例 private static Singleton2 instance; //将构造方法私有,不让外部直接创建对象 private Singleton2(){ } //提供一个用于获取实例的方法 public static Singleton2 getInstance(){ if(instance==null){ instance = new Singleton2(); }; return instance; }}
3.测试类Test.java
package com.czhappy.designpattern.singleton;public class Test { public static void main(String[] args) { Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if(s1==s2){ System.out.println("s1与s2是同一个实例"); }else{ System.out.println("s1与s2不是同一个实例"); } Singleton2 s3 = Singleton2.getInstance(); Singleton2 s4 = Singleton2.getInstance(); if(s3==s4){ System.out.println("s3与s4是同一个实例"); }else{ System.out.println("s3与s4不是同一个实例"); } }}
4.测试结果
三、总结
恶汉模式的热点是加载类时比较慢,但运行时获取对象的速度比较快 线程安全
懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全
0 0
- Java设计模式之单例设计模式学习
- Java设计模式学习笔记之单例模式
- java设计模式学习之单例模式
- Java学习笔记---设计模式之单例模式
- java学习笔记-设计模式之单例模式
- java设计模式学习之单例模式
- java设计模式学习之单例模式
- 设计模式学习笔记(Java篇)之单例模式
- Java设计模式(1)之单例模式学习总结
- Java设计模式学习之单例模式
- 学习设计模式之单例模式
- 设计模式学习之单例模式
- 设计模式学习之单例模式
- 设计模式学习之单例模式
- 设计模式学习之---单例模式
- 设计模式学习之单例模式
- 设计模式学习之--单例模式
- 设计模式学习之单例模式
- S2226SQL高低金牌考题第一次测试分析
- (一)1.6 JAVA编写的基本规则
- S1 错题解析
- 使用Redis计数器防止并发请求
- MFC中如何修改对话框中控件的TAB顺序
- java设计模式学习之单例模式
- JAVA读取Mysql数据的方法
- 打造含有 Mali Graphics Debugger 支持的虚幻引擎应用程序
- HBase 默认配置
- List的所有方法
- 互斥+相交
- 【认证】【德国】Germany : Astra HD+
- C语言:求一个数组中只出现一次的两个数
- J2EE13规范