开闭原理和Java“最终”修饰符

开闭原理和Java“最终”修饰符,第1张

开闭原理和Java“最终”修饰符

坦率地说,我认为开放/封闭原则更多是过时的。从80年代和90年代开始,OO框架是基于以下原则构建的:所有事物都必须继承自别的东西,并且所有事物都应该是可子类化的。

这在MFC和Java
Swing等时代的UI框架中最为典型。在Swing中,您具有可笑的继承性,其中(iirc)按钮扩展了复选框(或相反),从而给其中一个未使用的行为(我认为是对复选框的setDisabled()调用)。他们为什么要共享血统?没什么,除了,他们有一些共同的方法。

这些天组成比继承更受青睐。Java默认情况下允许继承,而.Net采用了(更现代的)默认情况下不允许继承的方法,我认为这是正确的(并且与Josh
Bloch的原理更加一致)。

DI / IoC还为合成提供了条件。

乔什·布洛赫(Josh
Bloch)还指出,继承破坏了封装,并给出了一些很好的解释原因。还已经证明,如果通过委派而不是扩展类,则更改Java集合的行为更加一致。

就我个人而言,这些天来我在很大程度上将继承视为仅是关于继承的细节。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5587159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存