android 设计模式之单例模式详解
2016-05-28 16:39
543 查看
大家对单例模式应该都是耳熟能详,手机内存有限,所以在很多时候我们都需要用到单例模式来减少资源开销,比方涉及到io操作之类,单例模式难点就是在有效降低资源的情况下保证多线程安全
1,饿汉式,一般代码如下
隐藏公共的构造方法,类创建的时候创建一个对象,对外提供一个静态方法,供其他地方调用,永远都只能获取到当前类的唯一一个对象
2,懒汉式,一般代码如下
同样的道理,也会把public的constactor隐藏起来,但是与之不同的是初始化并非在类创建的时候初始化,而是在第一次调用的时候进行初始化,以后每次调用都会同步一下数据,这样会造成资源的浪费,好处是不需要默认进行初始化,但是相比而言,由于每次都需要同步,而且第一次调用要进行初始化,会造成一定的数据延迟,所以这种方式不推荐
1,饿汉式,一般代码如下
package com.spring.singletonpatten; /** * Created by android_swift on 16/5/28. */ public class HurrySingleton { private HurrySingleton() { } public static final HurrySingleton hurrySingleton = new HurrySingleton(); public static HurrySingleton getHurrySingleton(){ return hurrySingleton; } }
隐藏公共的构造方法,类创建的时候创建一个对象,对外提供一个静态方法,供其他地方调用,永远都只能获取到当前类的唯一一个对象
2,懒汉式,一般代码如下
package com.spring.singletonpatten; /** * Created by android_swift on 16/5/28. */ public class LazySingleton { private LazySingleton() { } public static LazySingleton lazySingleton; public static synchronized LazySingleton getLazySingleton(){ if (null == lazySingleton){ lazySingleton = new LazySingleton(); } return lazySingleton; } }
同样的道理,也会把public的constactor隐藏起来,但是与之不同的是初始化并非在类创建的时候初始化,而是在第一次调用的时候进行初始化,以后每次调用都会同步一下数据,这样会造成资源的浪费,好处是不需要默认进行初始化,但是相比而言,由于每次都需要同步,而且第一次调用要进行初始化,会造成一定的数据延迟,所以这种方式不推荐
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories