继承有一些独特的优点:

  • 它是自然的
  • 它是优雅的
  • 它允许编写一般的代码

但是,继承也有如下问题:

  • 很难做得很好
  • 在发现设计中的不足时很难改变
  • 客户程序员很难理解
  • 层次结构会“泄露”给客户代码,也难以改变

复合会得到与继承相同的结果(具体类、具体消息和重用已有代码),但有如下优点:

  • 较容易开发
  • 较容易改变
  • 客户容易理解
  • 不会泄露给客户代码

    在整体上,尤其对于初学者,复合比继承更好,实现适当规模的应用程序时根本不使用继承是完全合理的。继承最好留给专家,尤其是实现可重用代码的大型库(甚至,继承最适合于很好理解的域,例如图形化用户界面、数据库、网络和集合)。
    

posted on 2008-06-10 19:22  蜡笔旺旺  阅读(738)  评论(0编辑  收藏  举报