设计模式之 单例模式

来源:互联网 发布:广州网络咨询医生招聘 编辑:程序博客网 时间: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
原创粉丝点击