专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
51好读  ›  专栏  ›  ImportNew

分层设计:Service 层真的需要实现接口吗?

ImportNew  · 公众号  · Java  · 2024-05-20 20:17

正文

请到「今天看啥」查看全文


最后一个理由是 可以对 Service 进行多实现 。这个理由不充分,或者说没有考虑场景。实际上在大多数情况下是不需要多实现,或者说可以使用其它方式替代基于接口的多实现。

另外,对于很多使用了接口的项目,项目结构也是有待商榷的!下面,我们结合项目结构来说明。

一般项目结构都是按层来划分的,如下所示:

  • Controller
  • Service
  • Dao

对于不需要多实现的情况,也就不需要接口了。上面的项目结构即可满足要求。

对于需要多实现的情况,无论是现在需要,还是后面需要。这种情况下,看起来好像是需要接口。此时的项目结构看起来像这样:

  • Controller

  • Service


    • — 接口在一个包中
    • impl — 实现在另一个包里
  • Dao

对于上面的结构,我们来考虑多实现的情况下,该怎么处理?

第一种方式,是在 Service 中新增一个包,在里面编写新的逻辑,然后修改配置文件,将新实现作为注入对象。

  • Controller

  • Service


    • —- 接口在一个包中
    • impl —实现在另一个包里
    • impl2 —新实现在另一个包里
  • Dao

第二种方式,是新增一个 Service 模块,在里面编写新的逻辑(注意这里的包和原来 Service 的包不能相同,或者包相同,但是类名不同,否则无法创建类。因为在加载时需要同时加载两个 Service 模块,如果包名和类名都相同,两个模块的类全限定名就是一样的了!),然后修改配置文件,将新逻辑作为注入对象。







请到「今天看啥」查看全文