java设计模式学习之单例模式
2017-01-13 14:27
309 查看
一、概述
在实际开发中,有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等,如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等。
单例模式保证整个应用中某个实例有且只有一个
单例模式分为饿汉模式与懒汉模式
二、案例代码
1.恶汉模式Singleton.java
2.懒汉模式Singleton2.java
3.测试类Test.java
4.测试结果
三、总结
恶汉模式的热点是加载类时比较慢,但运行时获取对象的速度比较快 线程安全
懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全
在实际开发中,有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等,如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等。
单例模式保证整个应用中某个实例有且只有一个
单例模式分为饿汉模式与懒汉模式
二、案例代码
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.测试结果
三、总结
恶汉模式的热点是加载类时比较慢,但运行时获取对象的速度比较快 线程安全
懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全
相关文章推荐
- java设计模式学习之单例模式
- Java设计模式学习01——单例模式
- java设计模式学习4--Builder Pattern[原创]
- java设计模式学习系列之六:Observer, 观察者模式---小例
- JAVA设计模式学习之----创建模式:工厂模式(抽象工厂)
- Java设计模式学习笔记---单一职责原则(一)
- Java设计模式学习心得
- java设计模式学习5--Adapter Pattern[原创]
- JAVA设计模式学习之Flyweight模式(2)
- JAVA设计模式学习之----创建模式:单例模式
- Java设计模式 -- 学习笔记
- 设计模式学习笔记以及java代码实现
- GoF设计模式学习之一:单例模式(Java实现)
- Java设计模式(学习笔记)--Strategy 模式
- java设计模式学习2--Factory Pattern[原创]
- 从设计模式学习oop思维,最后再具体通过java实现
- JAVA设计模式学习第二天 设计模式之Factory——买货篇
- JAVA设计模式学习第三天 设计模式之Chain of Responsibility——项目篇
- Java设计模式学习心得
- 轻松学习JAVA设计模式