设计模式之 单例模式
来源:互联网 发布:广州网络咨询医生招聘 编辑:程序博客网 时间:2024/06/06 00:55
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。
使用场景:
比如用户登陆注册以及其他操作,用户就可以设计成单例模式!
保证一个类是单例模式需要三个方面:
1.构造函数必须私有
2.必须有一个静态private此类型的对象,
3.必须有一个生成这对象的public 静态函数,供外界获取
一个简单的例子:
public class Singleton implements Serializable{/* 私有构造方法,防止被实例化 */ private Singleton() { } /* 此处使用一个内部类来维护单例 */ private static class SingletonFactory { private static Singleton instance = new Singleton(); } /* 获取实例 */ public static Singleton getInstance() { return SingletonFactory.instance; } /* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */ public Object readResolve() { return getInstance(); } }
android 原生代码中,使用单例模式的也有很多,比如在日历中:\packages\providers\CalendarProvider\src\com\android\providers\calendar\CalendarDatabaseHelper.java
/* package */ class CalendarDatabaseHelper extends SQLiteOpenHelper {... private static CalendarDatabaseHelper sSingleton = null;...public static synchronized CalendarDatabaseHelper getInstance(Context context) { if (sSingleton == null) { sSingleton = new CalendarDatabaseHelper(context); } return sSingleton; }
/** * Private constructor, callers except unit tests should obtain an instance through * {@link #getInstance(android.content.Context)} instead. */ /* package */ CalendarDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); if (LOGD) Log.d(TAG, "Creating OpenHelper"); mSyncState = new SyncStateContentProviderHelper(); }}
就这样子咯!
0 0
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- (swift) iOS线程二 ——Operation和OperationQueue简单用法
- 2016京东算法工程师实习生笔试编程题:小球的距离
- 基本的一些算法
- Struts2(1)——总体概述
- Linux动态链接库的建立与使用
- 设计模式之 单例模式
- POJ2528
- 线性表的链式存储结构
- getSystemService()介绍
- Laravel 5.1中 Redis 的安装配置及基本使用教程
- 应用简介怎么写?
- 自定义点击变大图片
- 机器学习(Part I)机器学习的种类
- 使用meminfo分析Android单个进程内存信息