Retrofit源码学习六:框架中的设计模式

目录

系列文章:

1、构建者模式

2、工厂模式

3、外观模式

4、策略模式

5、适配器模式

6、观察者模式


系列文章:

Retrofit源码学习一:Retrofit介绍

Retrofit源码学习二:代理模式

Retrofit源码学习三:Retrofit源码详解一

Retrofit源码学习四:Retrofit源码详解二

Retrofit源码学习五: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框架虽然代码不多,但它是设计模式的典范。

6、观察者模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值