前后端数据交互-优化|页面加载中...|泛型方法|枚举

目录

  • 前后端数据交互-优化
    • 1 数据正在读取-页面(loading函数)
    • 2 枚举(统一后端返回给前端的 数据格式)
      • 2.1 4种访问修饰符
      • 2.2 Static final 优先加载并且不可变------------常量
      • 2.4 变量值有固定范围----------方法-------switch-case
      • 2.3 变量值有固定范围----------类-------enum枚举类型
    • 3 泛型方法
      • 3.1 问题:后端给前端返回的数据类型不统一
      • 3.2 解决:固定传值类型格式(3个属性:状态码,信息,数据)
        • 3.2.1 状态码(枚举)
        • 3.2.2 私有化-构造函数
        • 3.2.3 私有化 静态方法
        • 3.2.4 公开方法内部调用私有化 静态方法
      • 3.3 泛型方法

前后端数据交互-优化

1 数据正在读取-页面(loading函数)

背景:数据从服务器读取速度慢,给个反应:加载中页面,用户体检好
代码执行:至上而下,先出现加载页面,获得数据完成,关闭加载页面

then–catch–finally 同 try–catch–finally
请求成功,做什么?----出错,做什么?----无论成败,都得做什么?(关闭加载页面)

methods:{getTableData(){const loading = this.$loading({lock: true,text: '页面正在加载中...',background: 'rgba(0,0,0,0.7)'})this.$axios.request({url: '/ums-user/page',method: 'get',params: this.params}).then(response => {this.tableData = response.data}).catch(Error => {console.log(Error)}).finally(() => {loading.close()})}

2 枚举(统一后端返回给前端的 数据格式)

背景:后端 返回给 前端 数据类型不一:boolean、集合等 ==》后端 向前端返回数据 必须统一:返回值(状态码,信息(状态码辅助解释),真正返回数据值(泛型))

2.1 4种访问修饰符

本类本包不同类不同包的子类不同包
公共场合public:
方法
房子能让孩子住protected:
被子类继承的方法
夫妻房产证默认(不写)
身份证private:
属性

2.2 Static final 优先加载并且不可变------------常量

Static final +变量(基本数据类型/引用数据类型)= 常量
public static final 作用域:全局+优先加载+不可变

  1. 基本数据类型:值不能变
Static final int A(大写) = 1; A的值不能变,只能为1
  1. 引用数据类型:地址不能变,值可以变
Static final int[] ARR = new int[10];错:ARR = new int[20];  不能重新赋地址
对:forint i =0;i<ARR.length ;i++{ARR[i]=i*10;}  可重新赋值

定义常量时,需要对常量 初始化
为有别于变量, 常量取名用大写字符(全大写单词)

2.4 变量值有固定范围----------方法-------switch-case

定义常量

public class EatCode{public static final int Breakfast = 1 ;public static final int LUNCH = 2 ;public static final int DINNER= 3 ;
}

数字不能直接表达清除。便于查看代码

void main()
{
int a;
...
switch(a){
/**
case 1:
case 2:
case 3:**/
case Breakfast:
case LUNCH:
case DINNER:}
}

if-else if - else :嵌套太多,不方便查看

2.3 变量值有固定范围----------类-------enum枚举类型

便于:引用该类时,不能随意new 对象,只能在有限范围选择(枚举项)----统一做法

enum枚举类: 枚举项 、属性 、 方法

枚举类中是私有构造方法
枚举被设计成是单例模式,即枚举类型会由JVM在加载的时候,实例化枚举对象,你在枚举类中定义了多少个就会实例化多少个,JVM为了保证每一个枚举类元素的唯一实例,是不会允许外部进行new的,所以会把构造函数设计成private,防止用户生成实例,破坏唯一性。

public enum ResultCode {//枚举项:现成带有全部属性的对象如下SUCCESS(200,"请求成功"),ERROR(500,"请求失败"),AUTH(401,"用户未登录或登陆超时"),PERMISSION(403,"无此操作权限");//属性private Integer code;private  String message;//    私有构造函数ResultCode(Integer code,String message){this.code = code;this.message = message;}
}

3 泛型方法

3.1 问题:后端给前端返回的数据类型不统一

后端给前端返回的数据类型不统一:boolean、集合等。-----------------前端对此,定义不同的参数类型接受(避免)-------------后端发送数据:统一格式(状态码,信息(状态码辅助解释),真正返回数据值(泛型))

3.2 解决:固定传值类型格式(3个属性:状态码,信息,数据)

返回值 ResultJson 泛型类(3个属性:状态码,信息,数据)

@Getter
public class ResultJson<T> {private Integer code;private String message;private T obj;

只要写有参构造函数,就会覆盖掉原有无参构造。解决:再写一遍无参构造
不让其他人new 对象,可以把构造函数,private修饰。

3.2.1 状态码(枚举)

状态码:固定范围值==枚举(不能随意new:只能选现成带有属性的对象)

3.2.2 私有化-构造函数

统一格式:私有构造(不能随意new)
不安全方法:public 构造方法-----能随便new任何属性

俄罗斯套娃:方法嵌套方法-----客户只能看到,我想让你看的
例如:前端代码调用的------was的端口,was的端口包裹着--------真正后端的端口
后端发送数据只能4种方法--------4种方法内部:同一种父方法+不同的设定-----父方法私有化private,不能被外部重写(外部可能继承后重写)

私有化-构造函数 -----状态码,信息可以任意赋值(×)外面不能new 对象,不能用

private ResultJson( Integer code,String message,T obj){this.code = code;this.message = message;this.obj = obj;}

3.2.3 私有化 静态方法

私有化 静态方法getInstance----状态码,信息被定义成枚举----------状态码,信息的范围被固定(×)外面不能new 对象,不能用 童话书(范围)

private static <T> ResultJson<T> getInstance(ResultCode resultCode,T obj){return new ResultJson(resultCode.getCode(),resultCode.getMessage(),obj);}private static <T> ResultJson<T> getInstance(ResultCode resultCode,T obj,String message){return new ResultJson(resultCode.getCode(),message,obj);}

3.2.4 公开方法内部调用私有化 静态方法

公开方法内部调用私有化 静态方法getInstance-----被指定枚举的具体类型(success/error)----------状态码,信息被具体到枚举中的某一项(√)能new 对象,能用 美人鱼

  public static <T> ResultJson<T> success(T obj,String message){return getInstance(ResultCode.SUCCESS,obj,message);}public static <T> ResultJson<T> error(String message){return getInstance(ResultCode.ERROR,null,message);}public static <T> ResultJson<T> auth(){return getInstance(ResultCode.AUTH,null);}public static <T> ResultJson<T> permission(){return getInstance(ResultCode.PERMISSION,null);}

3.3 泛型方法

在这里插入图片描述
定义方法用到泛型(参数泛型T obj/返回值泛型ResultJson/两者都有):写泛型标识符


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部