问题描述
请大家先阅读原文:
12 【强制】 定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性 默认值 。 反例: POJO 类的 createTime 默认值为 new Date(),但是这个属性在数据提取时并没有置入具体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。
14 【强制】构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。
我有一个分页请求对象,最核心的基类大概是下面这个样子:
@Data
public class MyPageQO {
/**
* 页码
*/
private Integer pageIndex;
/**
* 分页大小
*/
private Integer pageSize;
}
问题来了,我希望在前端如果没有传入分页参数时,为这个分页对象赋值默认的分页参数,比如第一页,每页十条。
请问:
- 我应该如何写,才能同时满足第12条和第14条的规定?
- 如果我有子类继承这个类,我应该如何写?
我的思路
在这里我提出我的思路,我认为可以在类中写protected void init()
函数,并且在子类的构造方法中调用父类的init
方法,使得拥有父类的属性和是否赋默认值独立开来,不知道我的思路是否正确,还希望实践过这个规约的大神指点迷津,如果有更多需要注意的地方或者踩过的坑,也欢迎您分享您的经验,先谢过大家。
DO的作用仅仅是传递数据,不应该与任何业务逻辑绑定在一起,所以定义init方法之类的并不是太好