进来学习java的时候遇到了一些经验说多用对象模式,少用继承模式。如今写一点感想。
面向对象的对象之间的哦和方式有继承,实现。关联,依赖,聚合和组合。当中的继承和实现是继承这类模式。
说道的一个原因就是代码污染。
比如一个父类很复杂。而一个继承了这个类的子类可能重写了一部分的方法。可是继承了所有的方法。用户在使用继承的子类的时候可能会调用没有重写的父类的方法而且假设这样的方法是在子类的设计者的意图之外的操作。那么子类在继承父类的时候,能够觉得不光是继承到了实用的功能。还继承到了垃圾功能。父类的代码污染到了子类的代码。
假设採用组合的方法。子类不再继承父类。而採用关联或者聚合的方式进行耦合。这样会产生什么样的情况呢?我们首先假设原来的父类的设计是完好合理的。用户不管怎么訪问父类,其结果都在父类的设计者的意料之内。如今,子类通过随意的方式使用父类的功能去完毕一个新的功能。仅仅要保证子类设计的合理,那么不会额外的须要子类的设计者去关心用户訪问子类对象的父类的非重写的方法而产生意外。
总结一下,就是继承这样的方式的耦合额外的引入了不须要的功能。因此,添加了子类设计者的关注点和风险。
使用关联的方式实现耦合,仅仅要保证父类设计合理。子类设计合理,就不会对子类的设计者提出额外的须要。
本文參考:
http://blog.csdn.net/hivon/article/details/583558