java - 在 spring 服务层使用继承是最佳实践吗?

标签 java spring design-patterns

我有两个名为 PowerUserManagerSimpleUserManager 的服务 bean。两个被 @Service 注释的类都有大约 20% 的代码是相同的

我已经构建了一个具有公共(public)抽象 类 (BaseUserManager) 的继承树,以减少两个类之间的冗余。

                               BaseUserManager
                                      |
                               ---------------
                               |             |
                       PowerUserManager  SimpleUserManager

然后在我的 @Controller 或任何客户端类中,我使用 @Autowired 注释来注入(inject) PowerUserManagerSimpleUserManager 我根据我正在处理的用户实例使用其中之一。

我不习惯使用继承 分解代码,尤其是在服务层。你们 Spring 研究员看到更好的方法了吗?

最佳答案

在这种情况下考虑继承组合之前,您应该问自己一些基本问题,and in general :

  1. 所有 用户管理器都是 BaseUserManager 吗?在任何可能的情况下,这都是 IS-A 关系吗?
  2. 在所有涉及用户管理器的地方公开 BaseUserManager 公共(public) API 是否有意义?
  3. BaseUserManager 是否有单一职责?

如果答案是肯定的,那么继承就是正确的方法。否则,您可能应该重新设计成几个更小的组件,并将 PowerUserManager 和 SimpleUserManager 视为服务外观。

关于java - 在 spring 服务层使用继承是最佳实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147792/

相关文章:

java - 为 servlet 分配异常 - JAVA 中的 Web 编程

java - 如何将字符串的二维数组转换为 int 类型之一?

c# - C# 的并行编程模式?

java - 我可以将 Java BigInteger 提升为 double/float 幂吗?

java - 如何根据大小对数字数组列表进行排序?

spring - 休息 : Extending CrudRepository for self-referencing entities throws an exception

c# - 通用单例<T>

javascript - Node JS App 更好的设计和分离

java - Android Studio错误: java version not found

java - android中日期格式问题