目录
系列文章:
Retrofit源码学习五:Retrofit中同步、异步请求解析
1、构建者模式
作用:将复杂对象的构建和表示相分离。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.baidu.com/")//设置网络请求的URL地址
.addConverterFactory(GsonConverterFactory.create())//设置数据解析器
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava平台
.build();
除了Retrofit,还有ServiceMethod也用到了构建者模式。
2、工厂模式
第一个例子,工厂模式,就是CallAdapter中的Factory类
public interface CallAdapter<T> {
Type responseType();
<R> T adapt(Call<R> call);
abstract class Factory {
public abstract CallAdapter<?> get(Type returnType, Annotation[] annotations,
Retrofit retrofit);
protected static Type getParameterUpperBound(int index, ParameterizedType type) {
return Utils.getParameterUpperBound(index, type);
}
protected static Class<?> getRawType(Type type) {
return Utils.getRawType(type);
}
}
}
第二个例子,静态工厂方法,就是Platform类
class Platform {
private static final Platform PLATFORM = findPlatform();
static Platform get() {
return PLATFORM;
}
//静态工厂方法
private static Platform findPlatform() {
try {
Class.forName("android.os.Build");
if (Build.VERSION.SDK_INT != 0) {
return new Android();
}
} catch (ClassNotFoundException ignored) {
}
try {
Class.forName("java.util.Optional");
return new Java8();
} catch (ClassNotFoundException ignored) {
}
try {
Class.forName("org.robovm.apple.foundation.NSObject");
return new IOS();
} catch (ClassNotFoundException ignored) {
}
return new Platform();
}
}
3、外观模式
也叫门面模式
4、策略模式
CallAdapter
5、适配器模式
CallAdapter
CallAdapter使用了工厂模式、策略模式、适配器模式。
Retrofit框架虽然代码不多,但它是设计模式的典范。