Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务类的角色_Java_Design Patterns - Fatal编程技术网

Java 服务类的角色

Java 服务类的角色,java,design-patterns,Java,Design Patterns,我知道在这个话题上有很多东西,但我似乎找不到任何能完全回答我问题的。我被告知使用服务->DAO->低级代码体系结构。我很难理解服务类的确切角色是什么,一个服务类既可以用于书刀,也可以用于用户刀吗?我将为每个类创建一个服务类,让服务类与DAO对话,获取结果字符串并将其存储在我的Book类和User类中,然后将该对象发送回控制器。在我看来,服务类是将所有工作委托给其他类的高级类。谢谢你的帮助 服务类可能充当抽象层,因此DAO或数据层对“业务层”是隐藏的 该服务可能会与多个DAO对话以执行一项功能,在

我知道在这个话题上有很多东西,但我似乎找不到任何能完全回答我问题的。我被告知使用服务->DAO->低级代码体系结构。我很难理解服务类的确切角色是什么,一个服务类既可以用于书刀,也可以用于用户刀吗?我将为每个类创建一个服务类,让服务类与DAO对话,获取结果字符串并将其存储在我的Book类和User类中,然后将该对象发送回控制器。在我看来,服务类是将所有工作委托给其他类的高级类。谢谢你的帮助

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

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

这种模式可以在端口和适配器或六边形体系结构中看到,因为业务逻辑与较低级别的协议隔离


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

将不同的业务操作划分为不同的服务类是一个设计决策,它取决于操作的复杂性、它们之间的关联程度等等。一些设计人员可能认为每个业务操作本质上都应该是一个单独的类(类似于),而另一些设计人员则更喜欢具有更丰富方法的更全面的接口

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


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

问题很好,但可能过于宽泛和主观。服务几乎可以是任何东西:围绕单个DAO的包装器,围绕涉及多个DAO的操作的事务包装器、服务集成器等等。在你的情况下,为什么不直接问呢?