最近遇到项目 最基本的model 类设计是这样的
model层
public class ContractModel extends BaseModel {
@Transient
private static final long serialVersionUID = -7915586025811092910L;
private Integer templatecategary; // //类型(1维保/2维修)是否有偿(1有偿/2无偿)形式(1**加粗文字**收款/2付款)
private String name; //合同名称
private String code; //合同编码
}
但是后面又继承了这个model层 不知道这样设计有什么好处
public class ContractQueryModel extends **ContractModel**{
public String toString(){
return "Model"+this.getClass().getName()+","+super.toString()+" ,[]";
}
}
仅看名字作出以下猜测:
ContractModel
是一个DTO,负责传输数据;ContractQueryModel
是一个查询参数对象,负责接收从Controller
(或其他地方)传来的查询参数;由于都是查询Contract,所以字段基本上是一样的,但为了以后扩展方便,所以这里用了继承的方式去实现。
但个人在实际应用中DTO和查询参数一般不是同一结构,DTO如题主所示,查询参数一般是DTO字段的复数形式,例如:
另外,@菩提旭光 提到的里氏替换原则,可以看一下这个,里面有提到题主这种设计可能会有什么问题。