复合优先于继承

继承打破了封装性。子类依赖于超类中特定功能的实现细节。而超类的实现有可能会随着发行版本发生变化,那么子类就回被破坏。

覆盖动作可能会引起一系列的问题。只给子类增加新的方法,而不覆盖现有的方法,相对比较安全。但是也不是绝对安全。例如 父类被扩展命名了与子类重名的方法。

使用复合可以解决该问题,详细请见设计模式里的装饰者模式。用一个类把另外的类包装起来。

只有当子类真正是超类的子类型时,才适合用继承。

posted @ 2009-09-12 06:03  macula7  阅读(127)  评论(0编辑  收藏  举报