2015-02-24 74 views
1

在我们的项目体系结构中,我们使用了包含经典服务层(打开事务并调用DAO层)的经典MVC模式。在服务层上使用接口

对于每个服务我们都有一个实现和他的接口。但说实话,我很确定,对于一个服务和他的界面,我们永远不会有一个以上的实现。所以好吧,也许更清楚的是在接口中声明的公共方法有助于了解服务的功能,但是一个接口用于多个实现,如果我们知道我们不会有多个实现,我们应该保留他们?

回答

2

documentation

实现一个接口允许类变得更加正式的关于 它承诺提供的行为。接口在类和外部世界之间形成合同 ,并且编译器在构建时强制执行 。

如果您知道只有一个实现,实现本身将定义合约,因此您可以删除这些接口。

但是编写一个接口可以帮助您更好地定义合同,并且您可能需要在给定的点为服务编写一个模拟,在这种情况下,您将从使用接口中受益。

+0

我同意它可以帮助单元测试,但单元测试不应该驱动开发不是吗?我没有提到它,但我们正在使用Spring,并且不使用组件的接口有时可能会带来问题(因为Spring使用的代理系统)... – 2015-02-24 11:08:14

+0

我正在讨论嘲笑你的服务(返回一个模拟实体列表只是为了查看您的视图是否正确显示集合)。在你的情况下,为了避免与Spring代理混淆,我肯定会使用接口。看看这个:http://stackoverflow.com/questions/11528061/i-want-to-define-a-spring-bean-class-with-no-interface – antonio 2015-02-24 11:15:31

4

我认为这是保持接口的好方法。

原因: 1.假设你想为不同的执行前缀编写相同的junits。尽管从数据库获取数据,您希望从单独的数据源获取数据,但是不同的实现就足够了。