我很擅长改造,想知道什么是最佳做法。
以下是我在网上找到的一些抽象代码:
bmp
并且假设我想使用此函数发出api请求/调用
public class RestClient
{
private static final String BASE_URL = "your base url";
private ApiService apiService;
public RestClient()
{
Gson gson = new GsonBuilder()
.registerTypeAdapterFactory(new ItemTypeAdapterFactory()) // This is the important line ;)
.setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
.create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(BASE_URL)
.setConverter(new GsonConverter(gson))
.setRequestInterceptor(new SessionRequestInterceptor())
.build();
apiService = restAdapter.create(ApiService.class);
}
public ApiService getApiService()
{
return apiService;
}
}
我的问题是我应该创建一个新的restClient对象,还是应该是一个单例,或者ApiService应该是一个单例。
最佳做法是什么?请记住,我不想使用依赖注入,我只想了解如何最好地使用改造。
你们中的一些人如何打电话?
答案 0 :(得分:9)
您应该以任何您喜欢的方式RestClient
作为单身人士(枚举,标准getInstance()
甚至double check
)。
将它们保持为单身会提高效果,因为您不会每次都创建有价值的对象,例如Gson
,RestAdapter
和ApiService
。
修改强> 可以通过Retrofit同时处理的最大请求取决于HttpClient配置。
与OkHttp
一起使用时,默认值为64(在Dispatcher
中定义)。
然而,它可以通过setMaxRequests()
进行操作,请记住不会产生太多线程(它可能会导致OutOfMemory)。
答案 1 :(得分:4)
你拥有的代码很好。您可以将restClient保持为单身,然后只要您想再次发布帖子就调用restClient.getApiService().getPosts();
(每次都不要创建新的restClient)。