entity层
entity定义的是实体类,位于最底层,也就是所谓的model。包含实体类的属性以及属性对应的get和set方法。
dao层
其次是dao层,其文件常以*Mapper或 *DAO命名,dao层会调用entity层,dao层会定义实际使用的crud的方法。
service层
再来到service层,service层用于业务实现,具体要调用到已定义的DAO层的接口。**Service层的设计首先是设计接口,再设计其实现的类,也就是项目中service以及impl包。
-
实现类
实现类(*impl)是去调用dao层的定义好的接口来实现业务逻辑。
-
接口
接口(service)是直接去调用实现类。
-
疑问1:为什么要有service层?都写在controller层它不香吗?
答:因为在之前的编程中我并没有service层的概念,所有东西都写在controller中。所以这边重点说一下。service层关心的是业务的处理过程。而controller只关心业务本身,举个栗子:类似于影院的取消订单,我只关心订单是否被取消,而不去关心它到底是怎么删除的。其优点是:
把业务处理过程封装Service层的有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁,可读性也高。 -
疑问2:service居然还分接口和实现类?(你在无中生有、无理取闹…吗?)为什么要绕一圈写个接口再去调用实现类呢?直接用实现类它不香吗?
答:还是来到具体的业务场景:我要删除一个影院的订单,那么需要执行的操作可能有需要释放座位。而释放座位的方式可能有很多中,比如我现在释放座位的方式是将座位的mark属性设为0,等到未来某天释放座位的方式是在已购座位表中删除一条数据。此时,我的service接口及其以上的层面,大可不必去为了这种改变而作出变动,只需在service的实现类中的业务处理中进行修改即可。
2020年7月30号。
目前对疑问2又有了一些新的看法。service分接口和实现,因为不想对外暴露代码的具体实现,所以只要提供对应是接口。
controller层
主要负责具体的业务模块流程控制
本文介绍了Java应用的四层架构:entity层负责实体类,dao层实现数据操作,service层处理业务逻辑,controller层处理请求。通过service层可以封装通用业务,提高代码复用性和可读性。同时,service接口与实现类的分离有助于隐藏具体实现,降低耦合。
799

被折叠的 条评论
为什么被折叠?



