繁体   English   中英

在spring服务层中使用继承是最佳做法吗?

[英]Is it a best practice to use inheritance in the spring service layer?

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

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

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

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

我不习惯使用继承来分解代码,尤其是在服务层中 春天的伙伴们看到了更好的方法吗?

在这种情况下,在考虑对组合的 继承之前,你应该问自己一些基本问题,一般来说

  1. 所有用户管理器都是BaseUserManager吗? 这在任何可能的情况下都是IS-A关系吗?
  2. 在任何用户管理器被调用的地方公开BaseUserManager公共API是否有意义?
  3. BaseUserManager是否只有一个责任?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM