您的位置:首页 > 移动开发 > Android开发

Android数据层解析层解耦问题

2015-11-12 17:15 579 查看
前言


Android数据层基本都跟业务挂钩,如果不把数据层提出来,哪架构无法做到完全独立,数据层的解耦是非常重要,所以就要做到模块完全独立,可扩展。

先看看JsonPaserFactory的实现,前面有讲过,不做详细说明:
BaseEntity entity = (BaseEntity) BaseApplication.httpRes.getPaser(type);

里面调用到application中的全局解析配置类BaseHttpRes类,此类是一个抽象类,具体代码如下:

public abstract class BaseHttpRes {

/**
* 根据reqType获取URL
* @param reqType
* @return
*/
public abstract String getUrl(int reqType);

/**
* 请求地址需要格式化的
* */
public String getUrl(int mId, String format) {
switch (mId) {
// case REQ_METHOD_GET_MORE_REPLY:
// return String.format(REQ_URL_GET_REPLY, format);
default:
return format + getUrl(mId);
}
}
/**
* 根据reqType获取返回解析对象
* @param type
* @return
*/
public abstract  Object getPaser(int type);

}

BaseApplication实现如下:

public abstract class BaseApplication extends Application implements
UncaughtExceptionHandler {
public  BaseHttpRes httpRes;
/**
* 初始化请求常量
*
* @return
*/
protected abstract BaseHttpRes initBaseHttpRes();

public BaseApplication() {
httpRes = initBaseHttpRes();
}
}

上面看到了基类编写了一个抽象方法,当子类继承时就的重写这个类,这样每个子项目就可以自由扩展实现,具体配置类就不用直接跟架构关联。
public class YingJiaApp extends BaseApplication {
public AsyncHttpClientImpl asyncImpl;
private final static int CWJ_HEAP_SIZE = 8* 1024* 1024 ;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
asyncImpl = AsyncHttpClientImpl.getHupuHttpClient();
MySharedPreferencesMgr.init(this, "yingjia");
}

@Override
protected BaseHttpRes initBaseHttpRes() {
// TODO Auto-generated method stub
return YingJiaRes.getInstance();
}
}
public class YingJiaRes extends BaseHttpRes {
private static YingJiaRes instance;
// public static String BASE_URL = "http://newapp.mobile.com/";
public static String BASE_URL = "http://api.app.com/v1/ios/";
public static String BASE1_URL = "http://api.app.com/v1/";
public static int REQ_METHOD_POST = 10000;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: