Model层设计

关于Model层的一次设计

背景: 最近在做一个新项目,服务端一个人承担;也是第一次,一个人承担服务端并且从0开始做的项目。整个项目因为处于demo阶段,所以是个单体项目。项目技术栈:spring boot 全家桶 + mybatis-plus。为了快也懒得写文档。文档生成用的是:swagger-bootstrap-ui 框架。整个项目的架构如下图:

项目主体架构
过程中的感受: 在写响应前端的Model和接收VO的时候,发现和DATA层的POJO老是在重复写代码,拷贝对象字段。

第一次设计

为每个API接口写一个Model。

优点: 生成的文档清晰明了,互相之间独立。

缺点: 重复编写大量的set和get代码,对象之间频繁复制。

为了解决缺点就想了第二种设计。

第二次设计

直接用Model去继承POJO,POJO的对象用mybatis-plus逆向生成工具生成能得到带SWG注解的类。

优点: 速度快,代码也写的少。

缺点: 生成的文档很不清晰,每个接口都有一堆没返回给前端的字段;业务中的额外字段会污染PO;POJO承担的责任太重了,Model、VO、PO都一个承担了。

解决方法:

缺点1的解决的方法是可以忽略掉不返回前端的字段(SWG的使用),但是还是有情况,就是接口之间主体对象是PO但是很多部分字段又不是PO中的,比如列表信息和详情信息,有交叉。所以生成的文档还是会不清晰,特别是遇上前端代码洁癖那就的挨批斗了。

缺点2的解决办法是在继承的Model中定义额外附属字段,列表简要的用户头像昵称信息等。

第三次设计

Model 建立Model的继承关系,VO建立自己的继承关系,不跟Po继承。意思就是:列表中简要信息的Model 为这个业务的BaseModel,详情接口的Model 去继承BaseModel;详情中独有的字段在详情Model中定义。

优点: 生成的文档已经相当清晰了,只有一个两个字段会发送交叉的情况;重复编写的代码也相比第一次少了比较多。

缺点: BaseModel的set方法复用也比较麻烦,因为BaseModel不能直接转换为子Model。

并且暂时没想到好的解决方法。

总结

通过这次发现,项目的架构真的是非设计的,而是跟着业务走出来的。关于Model、VO、PO的重复编写字段和set、get方法问题还是没有非常满意,希望有更好建议的朋友给与评论。谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发哥随手记

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值