为了账号安全,请及时绑定邮箱和手机立即绑定

java model 类设计问题

java model 类设计问题

皈依舞 2019-03-21 15:11:56
最近遇到项目 最基本的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()+" ,[]";    }} 
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

不确定你的问题是:“继承的意义”?还是“为什么ContractQueryModel只重写了toString方法”?

如果是不理解“继承的意义”?那我想,最基本的理解就是为了复用,可以看文档:

https://img1.sycdn.imooc.com//5cbbd47800012f1108000282.jpg

文档地址:Inheritance

如果你的疑惑是,为什么继承了半天,最后只重写了toString方法?

最主要的原因我想是因为作者想要满足开闭原则,想要一个新的toString方法,又不想对原代码ContractModel作修改。无论如何,关于细节,你应该直接和作者讨论,说不定他有更深层次的考虑。仅从你的代码片段里,我看不出更多内容了。

补充:

我个人理解,这不算是“代理模式”,原因是她不符合“代理模式”的基本特征,关于代理模式,看如下图解:

https://img1.sycdn.imooc.com//5cbbd47b0001e68f06000335.jpg

由此我们知道,代理模式下,代理类应该和被代理类实现相同接口,这里的ContractQueryModel不具备此特征。

最后我想谈谈对于设计模式的粗浅理解,所谓设计模式是一种解决特定问题的最佳实践范式,有些模式具备固定特征,有些则不具备。所以仅凭题主的几个简单的类,在脱离上下文的情景下,我很难判断他是哪种设计模式(我指那些不具备固定特征的)。


查看完整回答
反对 回复 2019-04-21
  • 3 回答
  • 0 关注
  • 782 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号