这就是我的工作:
我有一个基于 Internet 示例的服务工厂类。请看下面的代码。
当我需要创建我调用的服务实例时。
service = ServiceFactory.createRetrofitService(GithubService.class,
GithubService.SERVICE_ENDPOINT);
因此,如果您将 3 个端点添加到 GithubService 接口。在所需视图的单击事件中,只需使用所需的 SERVICE_ENDPOINT 调用 ServiceFactory。
例子。
public interface GithubService {
String RELEASE_ENDPOINT = "https://api.endpoint.com";
String STAGE_ENDPOINT = "http://api.stage.endpoint.com";
String DEV_ENDPOINT = "http://api.stage.endpoint.com";
@GET("/users/{login}")
Observable<UserResponse> getUser(@Path("login") String login);
}
在您的 RELEASE 按钮 onClick() 调用中:
private GithubService service;
service = ServiceFactory.createRetrofitService(GithubService.class,
GithubService.SERVICE_ENDPOINT);
在您的 STAGE 按钮 onClick() 调用中:
private GithubService service;
service = ServiceFactory.createRetrofitService(GithubService.class,
GithubService.STAGE_ENDPOINT);
在您的 DEV 按钮 onClick() 调用中:
private GithubService service;
service = ServiceFactory.createRetrofitService(GithubService.class,
GithubService.DEV_ENDPOINT);
服务工厂代码:
public class ServiceFactory {
private static final String TAG = ServiceFactory.class.getSimpleName();
/**
* Creates a retrofit service from an arbitrary class (clazz)
* @param clazz Java interface of the retrofit service
* @param endPoint REST endpoint url
* @return retrofit service with defined endpoint
*/
public static <T> T createRetrofitService(final Class<T> clazz, final String endPoint) {
final RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setLog(new RestAdapter.Log() {
@Override
public void log(String message) {
Log.v(TAG, message);
}
})
.setEndpoint(endPoint)
.build();
T service = restAdapter.create(clazz);
return service;
}
}