从OKHttp看单一职责

博主应届生菜鸟一枚。

引用Android源码设计模式 单一职责定义:“就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类就是一组相关性很高的函数、数据的封装。” 下面通过一个大家都很熟悉例子来说明一下 自己的理解。涉及到三个类 ,
OkHttpEngine类 负责网络请求。
,HttpCallback 类负责网络请求后的进行的操作
,CacheManager。专门负责读写缓存

代码已经被公司大牛封装好了。我最近再重构的时候,就拿过来使用,顺便学习了一下。下面直接看简略代码

先来看OkHttpEngine类

/**
*
**/
public class OkHttpEngine{
private Builder mBuilder;
public static final int MODE_GET = 0;//get请求
public static final int MODE_POST = 1;//post请求

private OkHttpEngine(Builder builder) {
          mBuilder = builder;
}

public void excute(HttpCallback callback){
  switch(mBuilder.mode){
  case get:
  doget(callback);
 break;

 case post:
  dopost(callback);
 break;
}
private void get(HttpCallback callback){
//这里面拿到参数
String requestUrl = HttpUtils.createUrl(mBulider.params);
//GET 请求
//这里进行get请求的时候可以设置是否从缓存中读取
if(loadCache){
//这里就简写了 还要判断一下缓存是否存在
CacheManager.getInstace().loadCache


/**
这里用鸿神的OkHttpUtil 去请求网络
OkhttpUtils.get()
                .url().
                ......
                .excute(callback);
**/
}
}

private void post(HttpCallback callback){
//Post请求
和get请求的逻辑差不多
}

public static class Builder{
int mode =  ....
String url ;
String tag;

public Builder url(String url){
this.url = url;
}

.........


}

}
}

可以看出这个类仅仅就是做了请求网络,网络请求就是他的职责

再看HttpCallBack,


public abstract class HttpCallback extends StringCallback{

@Override
public void onResponse(String s, int i) { 
try {        
 T result = parseResponse(s);       
 postResult(result);
 }
catch (Exception e) {    
 e.printStackTrace();    
 postError(e);   
 }
}

private void postResult(){
onsuccess();
//是否写入缓存
if(cache){
CacheManager.getInstance().writeCache(object);
}


}

public abstrack void onSuccess();

}

这里面就给出了简略的代码。可以看出 这个类的职责就是做回调后的操作例如 是否写入缓存

CacheManager里面主要就是做了细致的读写缓存操作,包括操作线程去处理缓存 ,这边就不给详细的代码了。。哈哈。

你可能感兴趣的:(从OKHttp看单一职责)