java/javaweb/

Java web疑惑1 - 为什么service 层 和 DAO

2018-07-13  本文已影响0人  shaYanL

有问题才容易更进一步

总体概述:

“接口是一种契约,它可以有多种实现。所以接口之有无取决于具体实现是否需要多样化。如果铁定一种DAO或一种Service只有一种实现,那么抽象出接口的意义不大。然而一些大型应用或许需要DAO和Service的多种实现,为了向上一层隐藏具体实现类,需要采用接口。隐藏具体实现类的创建过程,这有两种方法:一是实用工厂方法,代价是代码量大(每个DAO和Service一个工厂)。二是使用Spring的IoC,实现依赖注入,不需要写额外的代码,这也是引入Spring的理由之一。” --from:某博客

service需要多种实现的情况:

"接口提供了一个公用的方法提供方。 接口是用来规定子类的行为的。

举个例子吧 , 比如有个需求, 需要保存客户信息, 有些客户从网站来, 有些从手机客户端来, 有些从后台管理系统录入, 假设不同来源的客户有不同的处理业务流程, 这个时候我定义接口来提供一个保存客户的方法, 然后不同平台实现我这个保存客户的接口, 以后保存客户的话, 我只用知道这个接口就可以了, 具体调用哪个方法  去实例化具体你需要用的类,这也就是JAVA的多态的体现。 而如果你不用接口的话 , 首先我需要哪个方法  我就去实例化哪个类, 冗余很高,  其次扩展很差。  接口就是一个规范, 其子类都会有他提供的方法。 统一管理。" --from:某CSDN

DAO需要多种实现的情况:

如果项目后期有变更数据之久层的时候,通过更改DAO接口的实现类,就可以完成了。

总结:

“现在编程是面向接口编程,举个例子,假如我的代码以前是哪mybatis写的,现在我要那hibernate写,我就只用修改service的实现类和Dao的实现类。我的Control层调用的是service的接口类,所以我就不用修改Control层的内容。修改Service实现类就是让表示层不依赖于业务层的具体实现,实现业务层与表示层的分离。修改Dao层实现类就是让业务层不依赖持久层,实现业务层与持久层的分离。”  --from:某CSDN博客


上一篇 下一篇

猜你喜欢

热点阅读