JerryGao_ 2019-07-19 22:09 采纳率: 0%
浏览 534

Java怎么写出易阅读易维护易拓展的代码?

在用三层架构进行开发的时候有很多困惑,比如:
① Service层的话需要和Dao一一对应吗,比如有BookDao,是不是有一个BookService然后BookService里面有crud方法。这种方式合理吗

或者说我应该按照业务来划分,比如是人买书,那我就应该给这个行为建一个service类,可是这样的话对于人和书的crud方法应该放在Service层的哪里呢

② 还有一个问题是Service层的公共方法,比如人买书这个行为需要先看数据库里有没有这本书,人读书这个行为也需要这一步校验,这种类型的校验多了我肯定需要把他们抽离出来,但是我应该抽离成一个独立的Service还是做成工具类?
要是做成工具类的话,工具类可以引用Dao?因为这些校验需要查数据库。

③ 感觉最近做项目对于这些架构的问题很头疼,有没有想过的书或视频可以系统解答一下怎样写出合理的项目的,主要是合理的项目代码架构这方面。

  • 写回答

4条回答 默认 最新

  • threenewbee 2019-07-20 09:36
    关注

    你要知道,很多时候,你的多个目标是需要相互妥协才能找到折衷的办法的。

    好比往往价廉物美是不可得的,你追求物美,就要多花钱,你要追求价廉就要对质量妥协。

    在软件的设计方面来说,容易阅读的代码必然是简洁的代码。但是如果你要易于拓展,必然就要加重代码的复杂程度。比如说,你直接调用数据库这个就是简单。
    你要分层,然后调用一个接口,而把实际数据库的操作放在DAO,再实现这个接口,的确容易扩展了,替换数据库不需要改主程序,但是就不容易读了。

    所以,有经验的架构师和学生党的区别就是,前者才知道如何取舍,而讲理论,后者头头是道。

    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,