Biblioteca de Android Volley: ¿siempre tenemos que repetir Response.Listener y Response.ErrorListener

Recientemente comencé a usar Android Volley en mi proyecto. La práctica común mencionada en la mayoría de los tutoriales es usarlo de esta manera:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
            url, null,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    // do something
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // do something.
                }
            });

Mi consulta es: ¿tenemos que repetir este código en cualquier lugar donde necesitemos hacer una solicitud? Intenté poner un controlador común onResponse y onErrorResponse creando una clase auxiliar:

public class CustomJSONObjectRequest extends JsonObjectRequest {
    private BaseResource resource;
    private String queryId;
    private String paramArgs;

    public CustomJSONObjectRequest(int method, String url, JSONObject 
                               jsonRequest, 
                               Response.Listener<JSONObject> listener,
                               final Response.ErrorListener errorListener, 
                               final Context ctx,
                               final BaseResource baseResource) {
    super(method, url, jsonRequest,
            new Response.Listener<JSONObject>() {
                 // some common code for all BaseResources
            },
            new Response.ErrorListener() {
                // some common code
            });
}

Pero el problema con este enfoque es que necesito pasar todas y cada una de las cosas en el propio constructor, lo que me hace sentir que no lo estoy haciendo correctamente. Por ejemplo, si necesito pasar algunos parámetros de consulta para la url, necesito pasar siempre la url completa de la persona que llama, aunque todavía puedo tener una lógica común para generar la url en un solo lugar.

¿Puede alguien decirme cuál es la mejor manera de lograr algo como esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta