关于InheritanceComposition的问题,我一直在两个类之间的抽象上苦苦挣扎...像LoginManagerAuthenticateManager这样的类之间的IS-A与HAS-A关系。

我看到它的方式LoginManager可以是,也可以舒适地坐在AuthenticateManager所在的IS-A地方,将其作为超类继承(即Class LoginManager extends AuthenticateManager),或者只是将AuthenticateManager的对象声明为它自己的类的成员,这暗示着Composition,所以我猜想它只是取决于经验和对OOP范例的正确了解。因此,请问有人可以帮助解释这些类之间的适当关系吗?

PS:请主持人不要关闭此主题,因为它与网站的提问原则不一致。

谢谢。

最佳答案

这取决于您的需求。继承使您可以访问超类的受保护成员,而组合则不能。如果存在仅对派生类可用的类成员,则使它们成为属性并以组合方式访问它们是没有意义的,因为每个其他对象也可以访问它们。否则,这与您和您的团队的偏爱有关。

编辑:

没有规则像您认为的那样严格。例如,设计模式仅仅是模板,您不需要严格遵循它们。您不能盲目地遵守规则,没有人会相信您。考虑一下OOP更好,但是编写代码,这样您就可以清楚地解释所做的事情以及原因。

由于我不知道您的两个班级的设计,因此我无法真正告诉您您的需求是什么。该陈述(已经提到)应该足以为您指明正确的方向。

继承使您可以访问超类的受保护成员,而组合则不能。

关于class - 两个类之间的OOP关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20770188/

10-10 07:23