前后端数据交互-优化|页面加载中...|泛型方法|枚举
目录
- 前后端数据交互-优化
- 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 作用域:全局+优先加载+不可变
- 基本数据类型:值不能变
Static final int A(大写) = 1; A的值不能变,只能为1
- 引用数据类型:地址不能变,值可以变
Static final int[] ARR = new int[10];错:ARR = new int[20]; 不能重新赋地址
对:for(int 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/两者都有):写泛型标识符
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
