设计模式之 单例模式

      单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。

使用场景:

比如用户登陆注册以及其他操作,用户就可以设计成单例模式!

保证一个类是单例模式需要三个方面:

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值