0

我知道关于这个主题有很多内容,但我似乎找不到任何可以完全回答我的问题的内容。有人告诉我使用 Service->DAO->Low level code architecture 。我很难理解 Service 类的确切角色,一个 Service 类是否适用于 Book DAO 和用户 DAO?我将为每个服务类设置一个服务类,让服务类与 DAO 对话,获取结果字符串并将其存储在我的 Book 类和 User 类中,然后将该对象发送回控制器。在我看来,Service 类是将所有工作委托给其他类的高级类。谢谢你的帮助。

4

2 回答 2

0

服务类可能充当抽象层,因此 DAO 或数据层对“业务层”隐藏。

该服务可能会与多个 DAO 对话以执行一项功能,在这种情况下,它更像是一种外观模式,隐藏了与 DAO 通信以执行所需功能的复杂性。

这种模式出现在端口和适配器或六边形架构中,因为业务逻辑与较低级别的协议隔离。

http://c2.com/cgi/wiki?PortsAndAdaptersArchitecture

于 2013-10-21T01:41:11.090 回答
0

服务类的集合,称为服务层,负责执行企业应用程序的业务逻辑。服务类通常不直接映射到 DAO,因为它们代表可能涉及大量领域对象的业务操作。一个例子是订单提交过程,其中负责接受订单的代码必须与代表订单、客户账户、财务账户和库存的对象一起工作。

将各种业务操作分成不同的服务类是一项设计决策,它取决于操作的复杂性、它们的相关程度等等。一些设计者可能会决定每个业务操作本质上应该是一个单独的类(类似于Command 模式),而另一些设计者则更喜欢具有更丰富方法的更全面的接口。

存在服务层的概念是为了确保所有业务逻辑都存储在一个地方并且不重复。许多现代系统将有多个后端接口,例如 Web 应用程序(可能使用 Spring MVC 控制器)、SOAP 或 REST 接口(可能使用 Jersey)以及用于遗留终端或其他系统的专用适配器。使这些接口成为围绕公共服务层的所有适配器可确保它们都以一致的方式运行,并且对服务层的任何更改都将应用于所有访问接口。

在您的特定情况下,由于您需要询问,因此单个服务对象可能足以满足您的需求。将所有服务方法单独列出interface并对其进行编码总是一个好主意,这样您就可以替换实现以进行测试或将来的升级。

于 2013-10-21T01:49:15.097 回答