gpt4 book ai didi

c# - 组合应该专门用于继承还是在某些情况下不应该使用?

转载 作者:太空狗 更新时间:2023-10-29 21:18:29 25 4
gpt4 key购买 nike

在我想到的示例中,我有大约 4 行代码可以被一个函数封装,并且这个函数肯定会在同一层次结构中的其他类中使用。

我有以下重用该代码的选项:

  1. 将函数复制粘贴到需要它的类中。
  2. 为需要该功能的类创建一个基类并将其放在那里。
  3. 创建一个包含函数的类,该函数通过 DI 传递给需要它的类,或者只是该类的一个成员。 (似乎是大材小用)
  4. 创建一个静态实用程序类并将该方法放入其中。

我绝对不会做 1 或 4。过去我会做 2,但我试图坚持组合优先于继承的原则,所以我倾向于 4,但对于某些东西来说似乎很多很可能永远不会在层次结构之外使用,并且只有 4 行。我知道这很挑剔,但我想找出正确的方法。

最佳答案

继承是有原因的。它被过度使用的事实并不意味着它没有合法用途。关键是你是否使用它不应该取决于你是否可以轻松地重用它,而是它是否有意义属于基类,基于你的基类代表什么.

如果不更好地了解您的类是什么,以及您尝试重用的方法是什么,我无法针对您的具体情况提供具体建议。但是这样想:当你说它“很可能永远不会在层次结构之外使用”时,是因为它在层次结构之外完全没有意义吗?或者只是您不认为有人会构建碰巧使用此功能的东西,即使它可以想象在层次结构之外有意义?

如果此方法可以在您所谈论的特定层次结构之外产生任何意义,我会建议方法 #3。

当然,所有这些都假定您的类层次结构首先确实是一个层次结构。另一种常见的继承滥用是当人们在其应用程序的上下文中对不需要分层的对象强制分层时。

关于c# - 组合应该专门用于继承还是在某些情况下不应该使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204478/

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