gpt4 book ai didi

java - MVC 实践。另一个服务中的服务

转载 作者:行者123 更新时间:2023-11-29 04:58:44 25 4
gpt4 key购买 nike

Service1 注入(inject) Repository1Service2 注入(inject) Repository2

假设两种不同的场景:

1)Service2 的某些方法需要从 Repository1 中检索数据。Service2 是否应该注入(inject) Service1Repository1 当它们都提供各自的 get() 方法时?

2) Service1 的某些方法在它的末尾应该从 Service2 调用另一个方法。将 Service2 注入(inject)到 Service1 是一种不好的做法吗?针对此类需求使用 AOP 等事件监听技术是否是一种好的做法?

最佳答案

当我们讨论最佳实践时,这里有许多因素需要考虑。

作为一个良好的开端,请尝试理解 SOLID 的概念原则。通常,最好有多个类,这些类具有非常集中的角色来调用另一个类,而不是将所有功能组合在一个类中。高可重用性和最少的代码重复,这反过来又提供了可维护性。

对于场景 1.)

如果方法中定义的业务代码与另一个服务所需的业务功能相同,那么让一个服务调用另一个服务是完全没问题的。这遵循DRY原则,没有冗余代码。

但是如果它只是一个没有进一步业务逻辑的简单调用,直接从一个服务调用 Dao 而不是调用另一个服务来为你做这件事也完全没问题。特别是如果这两个服务无论如何都在同一个模块中,没有充分的理由让另一个服务成为一个明显的简单单行代码的桥接类,除非你想抽象它,但在你的情况下,这只是一个简单的 get 调用。

对于场景 2.)

但要考虑的另一件事是模块化依赖方向。如果每个服务互相调用,你的设计可能会出现问题,尽可能避免对不同模块的循环依赖,因为这可能导致意大利面条代码,更好地提取相同的代码到在可以由许多模块共享的公共(public)模块上声明的不同类。

最后请注意,正如 Robert Martin 所说,您无法在一轮中立即编写出最干净的代码。最好的代码是通过不断的重构和代码清理来伪造的。引用罗伯特·马丁的话,

The Boy Scouts have a rule: "Always leave the campground cleaner than you found it."

关于java - MVC 实践。另一个服务中的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com