java model 类设计问题

查看:271
本文介绍了java model 类设计问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近遇到项目 最基本的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字段的复数形式,例如:

public class ContractQueryModel implements Serializable {
    private Set<Integer> templateCategaries = Collections.emptySet();

    private Set<String> names = Collections.emptySet();

    private Set<String> codes = Collections.emptySet();
    
    ...
}

另外,@菩提旭光 提到的里氏替换原则,可以看一下这个,里面有提到题主这种设计可能会有什么问题。

这篇关于java model 类设计问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆