2017-06-29 34 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是一個很大的操作,並且如果你不需要,你不想不必要地實例化它。