一、背景介绍

       因为近期一直在做一个项目,之前对 MVP 架构和一些热门的第三方框架也是仅限于理论的理解,所以打算借着这次这个项目能对 MVP 架构以及相关热门第三方库有更深一步的了解。在这个项目的实际搭建过程中,我也进行了很多资料的查询,学习到了许多防止内存泄漏和对相关操作的一些封装,这些小的技巧和知识点都使我在做项目的过程中受益匪浅。因此,正好项目已经接近尾声,所以打算对之前一些网上资料和 Demo 提供的封装和小技巧进行一些记录,便于以后回看整理。

二、知识点 —— 关于 bean 的数据封装

       关于 bean 的数据封装,说白了就是再已经写好的实际数据 bean 外再套一层 bean 结构,对实际数据进行进一步的封装,这样做的好处就是可以将关于实际数据的一些其他信息,比如错误类型、错误详细信息等等额外的信息一同进行传递,这样当数据传输出现错误或者其他一些因为用户自身提交信息出现错误的时候,后端可以向用户提供更加准确的错误信息,同时因为我们只需要在 View 显示时从外层 bean 结构中提取出错误信息即可,这样也更好的减少了前端开发者的工作压力。

       关于其实现的具体代码,主要有下面两个,其余的一些数据类型的使用类比即可。

//关于列表的外部 bean 类
public class BaseArrayBean<T> {

    private int errorCode;
    private String errorMsg;
    private List<T> result;

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public List<T> getResult() {
        return result;
    }

    public void setResult(List<T> result) {
        this.result = result;
    }
}


//关于对象的外部 bean 类
public class BaseObjectBean<T> {

    private int errorCode;
    private String errorMsg;
    private T result;

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public T getResult() {
        return result;
    }

    public void setResult(T result) {
        this.result = result;
    }


}

       其实通过代码我们可以看出来,不管是什么数据类型的外部包装类,大多时大同小异的,不同的主要是在于其 getResult() 和 setResult() 中的数据类型,而其使用的方法就更加简单,直接调用类中的方法即可。

Toast.makeText(this, bean.getErrorMsg(), Toast.LENGTH_SHORT).show();