2017-06-29 54 views
1

使用凌空图书馆,我发现下面的代码:为什么排球队使用单身模式设计?

public class AppController extends Application { 

public static final String TAG = AppController.class 
     .getSimpleName(); 

private RequestQueue mRequestQueue; 

private static AppController mInstance; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mInstance = this; 
} 

public static synchronized AppController getInstance() { 
    return mInstance; 
} 

public RequestQueue getRequestQueue() { 

    //baraye avalin bar ejra mishe 
    if (mRequestQueue == null) { 
     mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 
    } 

    return mRequestQueue; 
} 

public <T> void addToRequestQueue(Request<T> req, String tag) { 
    // set the default tag if tag is empty 
    req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); 
    getRequestQueue().add(req); 
} 

public void cancelPendingRequests(Object tag) { 
    if (mRequestQueue != null) { 
     mRequestQueue.cancelAll(tag); 
    } 
} 

} 

我想知道为什么这个类使用Singleton模式的设计,如果我们创造出现什么问题之类的两个对象?

+1

不是**它不是**。你是明确将其作为Singletone的人,这是最佳做法。 – Enzokie

回答

0

这不是单身模式。单例模式强制只能有(最多)一个特定类的单个实例。这不是真的。您可以在许多AppController s上有很多RequestQueue s。

这是什么,实际上是lazy initialisation。它可能被雇用,因为实例化一个RequestQueue是一个很大的操作,并且如果你不需要,你不想不必要地实例化它。