在服务层上使用接口
Use of Interfaces on a service layer
在我们的项目架构中,我们使用经典的 MVC 模式,包括经典的服务层(打开事务并调用 DAO 层)。
对于每个服务,我们都有一个实现及其接口。但老实说,我很确定对于一项服务和他的接口,我们永远不会有超过一种实现。所以好吧,也许在接口中声明 public 方法更清楚有助于了解服务的作用,但是一个接口用于具有多个实现,如果我们知道我们不会有多个实现,我们应该保留它们吗?
Implementing an interface allows a class to become more formal about
the behavior it promises to provide. Interfaces form a contract
between the class and the outside world, and this contract is enforced
at build time by the compiler.
如果您知道您将只有一个实现,则实现本身将定义契约,因此您可以删除接口。
但是编写接口可以帮助您更好地定义契约,而且,您可能需要在给定的时间点为服务编写模拟,在这种情况下,您将受益于接口的使用。
我认为这是保持接口的好方法。
原因:
1. 假设你想用不同的实现来编写相同的 junits。尽管从数据库中获取数据,但您想从单独的数据源中获取数据,那么不同的实现就足够了。
在我们的项目架构中,我们使用经典的 MVC 模式,包括经典的服务层(打开事务并调用 DAO 层)。
对于每个服务,我们都有一个实现及其接口。但老实说,我很确定对于一项服务和他的接口,我们永远不会有超过一种实现。所以好吧,也许在接口中声明 public 方法更清楚有助于了解服务的作用,但是一个接口用于具有多个实现,如果我们知道我们不会有多个实现,我们应该保留它们吗?
Implementing an interface allows a class to become more formal about the behavior it promises to provide. Interfaces form a contract between the class and the outside world, and this contract is enforced at build time by the compiler.
如果您知道您将只有一个实现,则实现本身将定义契约,因此您可以删除接口。
但是编写接口可以帮助您更好地定义契约,而且,您可能需要在给定的时间点为服务编写模拟,在这种情况下,您将受益于接口的使用。
我认为这是保持接口的好方法。
原因: 1. 假设你想用不同的实现来编写相同的 junits。尽管从数据库中获取数据,但您想从单独的数据源中获取数据,那么不同的实现就足够了。