当前位置:  开发笔记 > 编程语言 > 正文

什么时候使用继承?

如何解决《什么时候使用继承?》经验,为你挑选了2个好方法。

我和我的朋友进行了一些辩论.我必须实现一个"浏览器进程观察器"类,每当正在监视的浏览器(比如说Internet Explorer)正在运行时,它就会调用一个事件.

我们创建了一个"过程观察者"课程,这里开始辩论:

他说构造函数应该只接受字符串(比如"iexplore.exe"),我说我们应该继承"进程观察者"来创建一个"浏览器观察者",它接受当前使用的浏览器枚举,构造函数将"翻译"它是"iexplore".他说我们应该使用一个函数函数来充当翻译器.

我知道这两种方式都是有效和良好的,但我想知道每种方法的优点和缺点,以及适用于我们的情况.



1> Herms..:

最近我一直采取"现在保持简单,如果你需要扩展它就重构"的方法.

你现在正在做的事情看起来很简单.你真的只有一个你想要处理的案例.所以我现在说采取更简单的方法.最后,如果你永远不需要制作另一种观察者,那么你将避免额外的复杂性.但是,如果需要,可以使代码更容易重构.

将来,如果您发现需要其他类型的观察者,那么请花费精力将其重构为继承(或组合,或您想要遵循的任何其他模式).如果您的初始代码完成正确,重构应该相当容易,因此您并没有真正添加额外的工作.

我发现这种方法对我来说效果很好.在我真的不需要继承的情况下,代码保持简单.但是当我确实需要它时,我可以添加它而没有任何实际问题.


我倾向于在很多时候尝试过度概括事物,所以这种方法对我来说非常有效,因为当我不需要时,它会阻止我这样做.

2> ChrisW..:

在其他条件相同的情况下,我更喜欢更简单的解决方案(将字符串作为构造函数参数的单个具体类)更复杂的解决方案(使用基类和子类).

当您想要改变行为时,继承是适当的:如果浏览器观察者将执行普通进程观察者不会执行的操作.但是,如果您只想改变数据的价值,那么只需更改数据即可.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有