Android單例模式
阿新 • • 發佈:2019-02-01
看到一段單例模式的程式碼,覺得挺有意思,如下:
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);
}
}