Helper类(es)vs功能继承.最佳实践

And*_*rko 7 language-agnostic inheritance

我有命令类实现ICommand {Execute}接口.有几个命令有重复的代码片段.我有几种选择如何干:

  • 创建静态帮助程序类并在其中移动重复的代码
  • 使用受保护的帮助程序方法创建命令继承

你会建议什么,为什么?

添加 感谢大家回复,许多答案都很相似和有用!

小智 5

另一种选择是将公共代码放在一个新类中,并使用依赖注入将helper类注入命令中,而不是静态类.这也与继承概念的构成有关.

  • +1在考虑代码重用时,不要认为"继承",认为是"聚合". (2认同)

Igo*_*kon 4

这完全取决于重复代码的性质。

辅助函数的输入/输出是什么?它们是否对一组逻辑相关的变量进行操作?然后 - 是的,您最好创建一个基类,其中这些变量作为成员,以及相关的辅助函数集。

否则,如果辅助函数中的参数不一致,您无论如何都会将这些函数实现为静态函数,对吧?在这种情况下,我不认为有理由使继承的事情变得复杂,我只会使用辅助函数来完成它(或者,如果您的语言不将函数视为一等公民,请使用静态辅助类)。