1. 程式人生 > >Android單例模式

Android單例模式

看到一段單例模式的程式碼,覺得挺有意思,如下:

public abstract class Singleton<T> {
    private T mInstance;

    protected abstract T create();

    public final T get() {
        synchronized (this) {
            if (mInstance == null) {
                mInstance = create();
            }
            return mInstance;
        }
    }
}

這是單例模式的抽象類,所有單例都需要寫這麼一坨東西,所以乾脆就將其抽象並泛型化,當需要使用單例的時候這麼做,先在一個單例管理類中宣告單例:

public class SingletonManager {

    public static final Singleton<Student> STUDENT_INSTANCE = new Singleton<Student>() {

        @Override
        protected Student create() {
            // TODO Auto-generated method stub
return new Student("hello student"); } }; public static final Singleton<Teacher> TEACHER_INSTANCE = new Singleton<Teacher>() { @Override protected Teacher create() { // TODO Auto-generated method stub return new Teacher("hello teacher"
); } }; }

使用單例的時候如下:

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student student = SingletonManager.STUDENT_INSTANCE.get();
        System.out.println(student.name);

        Teacher teacher = SingletonManager.TEACHER_INSTANCE.get();
        System.out.println(teacher.name);
    }
}