单例模式之饿汉模式与懒汉模式
2015-11-20 16:52
309 查看
单例模式:
应用场合:有些对象只需要一个就足够了,如皇帝等;
作用:保证整个应用程序中,某个实例有且只有一个;
类型:饿汉式模式,懒汉式模式;
步骤:(饿汉模式)1将构造方式私有化;不允许外部直接创建对象;
2创建类的唯一实例(private static类型的);
3提供一个用于获取实例的方法(public static);
饿汉式:在类加载的时候就会创建一个类的实例;
测试:
懒汉模式
区别:饿汉模式:加载类是比较慢;但运行时获取对象的速度比较快;线程安全的
懒汉模式则相反
应用场合:有些对象只需要一个就足够了,如皇帝等;
作用:保证整个应用程序中,某个实例有且只有一个;
类型:饿汉式模式,懒汉式模式;
步骤:(饿汉模式)1将构造方式私有化;不允许外部直接创建对象;
2创建类的唯一实例(private static类型的);
3提供一个用于获取实例的方法(public static);
饿汉式:在类加载的时候就会创建一个类的实例;
public class Singleton { //1.将构造方法私有化,不允许外部直接创建对象 private Singleton(){ } //2.创建类的唯一实例,使用private static修饰 private static Singleton instance=new Singleton(); //3.提供一个用于获取实例的方法,使用public static修饰 public static Singleton getInstance(){ return instance; } }
测试:
Singleton s1=Singleton.getInstance(); Singleton s2=Singleton.getInstance(); if(s1==s2){ System.out.println("s1和s2是同一个实例"); }else{ System.out.println("s1和s2不是同一个实例"); }
懒汉模式
public class Singleton2 { //1.将构造方式私有化,不允许外边直接创建对象 private Singleton2(){ } //2.声明类的唯一实例,使用private static修饰没有实例化 private static Singleton2 instance; //3.提供一个用于获取实例的方法,使用public static修饰 public static Singleton2 getInstance(){ if(instance==null){ instance=new Singleton2(); } return instance; } } 测试 //懒汉模式 Singleton2 s3=Singleton2.getInstance(); Singleton2 s4=Singleton2.getInstance(); if(s3==s4){ System.out.println("s3和s4是同一个实例"); }else{ System.out.println("S3和s4不是同一个实例"); }
区别:饿汉模式:加载类是比较慢;但运行时获取对象的速度比较快;线程安全的
懒汉模式则相反
相关文章推荐
- 08 网上商城项目实战之使用jersey实现应用服务器和图片服务器分离
- 私服搭建
- hdu 2063过山车-二分图 匈牙利算法
- easyui常用控件常用方法
- xml格式
- jquery $.each遍历json数组方法
- android中的4种launchmode详解
- 递归调用
- javaScript实现简单网页倒计时代码
- CentOS 7安装fcitx中文输入法
- ELK 日志收集实时分析大数据平台(简介)
- MasterKey ZipBug9950697
- configure(全局模式下)
- Android——Label样式
- iOS 之证书问题
- Apache HAWQ LIBYARN模块简介 [作者:林文]
- c++ STL map 使用
- 用canvas绘制圆点虚线的函数
- Unity2D中使用鼠标拖动物体移动
- 搭建Spring4+Spring4MVC+SpringData+JPA+Hibernate4项目