- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我想到的示例中,我有大约 4 行代码可以被一个函数封装,并且这个函数肯定会在同一层次结构中的其他类中使用。
我有以下重用该代码的选项:
我绝对不会做 1 或 4。过去我会做 2,但我试图坚持组合优先于继承的原则,所以我倾向于 4,但对于某些东西来说似乎很多很可能永远不会在层次结构之外使用,并且只有 4 行。我知道这很挑剔,但我想找出正确的方法。
最佳答案
继承是有原因的。它被过度使用的事实并不意味着它没有合法用途。关键是你是否使用它不应该取决于你是否可以轻松地重用它,而是它是否有意义属于基类,基于你的基类代表什么.
如果不更好地了解您的类是什么,以及您尝试重用的方法是什么,我无法针对您的具体情况提供具体建议。但是这样想:当你说它“很可能永远不会在层次结构之外使用”时,是因为它在层次结构之外完全没有意义吗?或者只是您不认为有人会构建碰巧使用此功能的东西,即使它可以想象在层次结构之外有意义?
如果此方法可以在您所谈论的特定层次结构之外产生任何意义,我会建议方法 #3。
当然,所有这些都假定您的类层次结构首先确实是一个层次结构。另一种常见的继承滥用是当人们在其应用程序的上下文中对不需要分层的对象强制分层时。
关于c# - 组合应该专门用于继承还是在某些情况下不应该使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204478/
我有一个带有模板函数的基类,该函数具有通用模板类型和专用版本。 #ifndef BASE_CLASS #define BASE_CLASS #include using namespace std;
我有这个 3D vector 模板 template class Vec3TYPE{ public: union{ struct{ TYPE x,y,z; }; struct{ TY
我是一名优秀的程序员,十分优秀!