我有两个名为 PowerUserManager
和 SimpleUserManager
的服务 bean。两个被 @Service
注释的类都有大约 20% 的代码是相同的。
我已经构建了一个具有公共(public)抽象 类 (BaseUserManager
) 的继承树,以减少两个类之间的冗余。
BaseUserManager
|
---------------
| |
PowerUserManager SimpleUserManager
然后在我的 @Controller
或任何客户端类中,我使用 @Autowired
注释来注入(inject) PowerUserManager
和 SimpleUserManager
我根据我正在处理的用户实例使用其中之一。
我不习惯使用继承 分解代码,尤其是在服务层。你们 Spring 研究员看到更好的方法了吗?
最佳答案
在这种情况下考虑继承对组合之前,您应该问自己一些基本问题,and in general :
- 所有 用户管理器都是 BaseUserManager 吗?在任何可能的情况下,这都是 IS-A 关系吗?
- 在所有涉及用户管理器的地方公开 BaseUserManager 公共(public) API 是否有意义?
- BaseUserManager 是否有单一职责?
如果答案是肯定的,那么继承就是正确的方法。否则,您可能应该重新设计成几个更小的组件,并将 PowerUserManager 和 SimpleUserManager 视为服务外观。
关于java - 在 spring 服务层使用继承是最佳实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147792/