簡體   English   中英

為什么凌空課使用單例模式設計?

[英]why the volley class uses singleton pattern design?

使用排球庫,我發現以下代碼:

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模式設計?如果我們創建該類的兩個對象,會發生什么問題?

這不是單例模式。 單例模式強制要求(最多)一個特定類的單個實例。 這不是真的。 您可能在許多AppController有許多RequestQueue

實際上,這是惰性初始化 之所以使用它,是因為實例化RequestQueue有點大操作,並且您不必不必要地實例化它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM