我正在编写代码与四个不同的服务器进行通信,其中一个需要两种不同类型的SSL。
我创建了一个Retrofit对象四次以获得四个具有不同baseURL的接口。它就像......
InterfaceOne one = new Retrofit.Builder()
.baseUrl("address1")
.build()
.create(InterfaceOne.class);
InterfaceTwo two = new Retrofit.Builder()
.baseUrl("address2")
.build()
.create(InterfaceTwo.class);
InterfaceThree three = new Retrofit.Builder()
.baseUrl("address3")
.build()
.create(InterfaceThree.class);
InterfaceFour four = new Retrofit.Builder()
.baseUrl("address4")
.build()
.create(InterfaceFour.class);
对我而言似乎重复代码。所以我的第一个问题是,这是一个处理四种不同baseURL的好结构吗?
而且,我将使用以下结构为具有两个不同SSL的服务器。但对我来说已经很难看了。
OkHttpClient okhttp = new OkHttpClient.Builder()
.sslSocketFactory(getSSLContextOne().getSocketFactory())
.build();
interfaceFour_1 = new Retrofit.Builder()
.client(okhttp)
.baseUrl("address4")
.build()
.create(InterfaceFour_1.class);
OkHttpClient okhttp2 = new OkHttpClient.Builder()
.sslSocketFactory(getSSLContextTwo().getSocketFactory())
.build();
interfaceFour_2 = new Retrofit.Builder()
.client(okhttp2)
.baseUrl("address4")
.build()
.create(InterfaceFour_2.class);
有没有更好的方法来改进当前的代码?