Android中设计模式之单例模式的种类
2015-10-11 09:23
441 查看
Android开发设计模式中的单例模式
单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到。比如在android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenHelper)等都会用到单例模式。下面针对一些例子分析一下我们在开发过程中应用单例模式需要注意的点。
一、作用
单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点
二、适用场景
1. 应用中某个实例对象需要频繁的被访问。
2. 应用中每次启动只会存在一个实例。如账号系统,数据库系统。
三、常用的使用方式
代码如下:
SingletonMode.java类:
MainActivity.java类代码如下:
单例模式是设计模式中最常见也最简单的一种设计模式,保证了在程序中只有一个实例存在并且能全局的访问到。比如在android实际APP 开发中用到的 账号信息对象管理, 数据库对象(SQLiteOpenHelper)等都会用到单例模式。下面针对一些例子分析一下我们在开发过程中应用单例模式需要注意的点。
一、作用
单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点
二、适用场景
1. 应用中某个实例对象需要频繁的被访问。
2. 应用中每次启动只会存在一个实例。如账号系统,数据库系统。
三、常用的使用方式
代码如下:
SingletonMode.java类:
package com.chengdong.su.modeutil.util; import android.content.Context; public class SingletonMode { private static Context mContext = null; private SingletonMode() { super(); } /** * 单例模式之懒汉式<br> * 优点:延迟加载,节省内存,没有使用加锁机制,执行效率高<br> * 缺点:单线程下安全,但是在多线程下不安全,多线程下不能保证单例<br> * * @param context * @return */ private static SingletonMode mInstance = null; public static SingletonMode getInstance(Context context) { mContext = context; if (mInstance == null) { mInstance = new SingletonMode(); } return mInstance; } /** * 单例模式之饿汉式<br> * 优点:没有使用加锁机制,执行效率高<br> * 缺点:类一加载的时候就初始化,浪费内存<br> * * @param context * @return */ private static SingletonMode mInstance2 = new SingletonMode(); public static SingletonMode getInstance2(Context context) { return mInstance2; } /** * 单例模式之内部类<br> * 优点:延迟加载,线程安全。执行效率高,节省内存<br> * 推荐:使用单例模式的地方就使用这一种 * * @param context * @return */ public static SingletonMode getInstance3(Context context) { mContext = context; return SingletonHolder.mInstance3; } /** * @ClassName SingletonHolder * @Description 内部类 * @author scd * @Date 2015年10月11日 上午9:01:11 * @version 1.0.0 */ private static class SingletonHolder { /** 静态内部类的成员变量 */ private static SingletonMode mInstance3 = new SingletonMode(); } }
MainActivity.java类代码如下:
package com.chengdong.su.modeutil; import com.chengdong.su.modeutil.util.SingletonMode; import android.app.Activity; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends Activity { private SingletonMode mSingletonMode = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSingletonMode = SingletonMode.getInstance3(this); Toast.makeText(this, "单例模式的使用", Toast.LENGTH_LONG).show(); } }
相关文章推荐
- Android viewpage滑动选项卡
- android 开发时遇到的问题
- Android应用开发性能优化完全分析
- Android Api Demos登顶之路(九十二)Graphics-->TypeFace
- Android ViewPager前两页显示空白
- Android应用开发性能优化完全分析
- 安卓手机烧内存卡(就是内存卡损坏)的补救办法
- Android学习实践:10.单选按钮RadioButton
- Android 学习之路一:Activity之间传递数据的四种方式
- Android 学习之路 1:如何在Activity之间传递数据
- Android中常见的设计模式
- android反编译
- 关于android4.4及以上版本无法恢复还原短信的问题记录与解决
- ElyarAnwar的Android实战笔记---计算器(二) 分享是最好的记忆
- 10.10 android study!
- 在Android Studio里导入library(以github里的SlidingMenu为例),jar包及so的步骤
- Android 入门:一步一步搭建开发环境
- android fragment生命周期深度理解
- Android两个Activity之间的数据交换
- Android Studio快捷键