当涉及到 Inheritance
或 Composition
问题时,我一直在努力解决两个类之间的抽象......IS-A 与 HAS-A LoginManager
和 AuthenticateManager
等类之间的关系。
我看待它的方式 LoginManager 可以是并且可以舒适地坐在 AuthenticateManager 的 IS-A 地方,将其作为父类(super class)继承(即 Class LoginManager extends AuthenticateManager
)或者只是将 AuthenticateManager 的对象声明为它自己类(class)的成员,这意味着组合,所以我想这只是归结为经验和对 OOP 范式的正确知识。那么请问,谁能帮助解释一下这些类之间的正确关系是什么?
PS:本主题不符合本站提问原则,请版主不要关闭。
谢谢。
最佳答案
这取决于您的需求。继承使您可以访问父类(super class)的 protected 成员,而组合则不能。如果有些类成员应该只对派生类可用,那么让它们成为属性并通过组合访问它们是没有意义的,因为每个其他对象也可以访问它们。否则就是你和你的团队喜欢什么。
编辑:
没有任何规则像您认为的那样严格。例如,设计模式只是模板,您不需要严格遵循它们。你不能盲目遵守规则,没有人会因此相信你。将 OOP 牢记在心但编写代码要好得多,这样您就可以清楚地解释您做了什么以及为什么。
由于我不知道你的两个类的设计,所以我不能真正告诉你你的需求是什么。此声明(已提及)应该足以为您指明正确的方向。
Inheritance provides you with access to protected members of a superclass whereas composition does not.
关于class - 两个类之间的 OOP 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770188/