给半吊子的人看

发现很多一瓶不满半瓶子晃悠的人对软件开发有很多类似的观点。而这些观点的坏处非常要命。问题是他的那些很多观点貌似很符合直觉,让人还不是那么容易反驳他的错误

错误观点1:用继承实现代码复用

错误观点1:我想弄一个base class,把重用的代码放到base class,写一些继承类实现不同的地方

A:完全搞错了继承的目的,继承的目的是为了动态调度(多态)。要实现代码重用,方法多的很,继承是最差的一种方式

参考怎样理解“组合优于继承”

不要仅仅为了代码复用而继承。当你使用组合来实现代码复用的时候,是不会产生继承关系的。过度使用继承(通过“extends”关键字)的话,如果修改了父类,会损坏所有的子类。这是因为子类和父类的紧耦合关系是在编译期产生的。

​ 不要仅仅为了多态而继承。如果你的类之间没有继承关系,并且你想要实现多态,那么你可以通过接口和组合的方式来实现,这样不仅可以实现代码重用,同时也可以实现运行时的灵活性。

作者:wuxinliulei 链接:https://www.zhihu.com/question/21862257/answer/75625366 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

众多设计模式包含的2个最核心原则(引自参考书籍 《Design Patterns: Elements of Reusable Object-Oriented Software》)

\1. Program to an interface, not an implementation. (面向接口编程,而不是具体的实现)

\2. Favor object composition over class inheritance.(如果某个场景的代码复用既可以通过类继承实现, 也可以通过对象组合实现, 尽量选择对象组合的设计方式)

作者:萧萧 链接:https://www.zhihu.com/question/21862257/answer/181179184 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

超多功能的类

错误观点2:这个东西应该有这个功能,那个功能,这些功能,哪些功能,所以应该弄一个class包含所有这些功能

Powered by Jekyll and Theme by solid

本站总访问量