拖了两天了

继承与组合(聚合)

  继承指从其他类继承属性和行为,他们之间存在父子关系,被继承的类称为父类。 is-a关系,例如:人是(is a)哺乳动物。
  组合(书中翻译组合,通常好像说聚合吧,因为是书的笔记所以以下还是以书为标准)指使用其他对象来构建新对象。has-a关系,例如:电脑(has a)显示器。

  继承与组合可以使得对象得到重用。重用使得系统的开发维护效率更高。在OO技术开始成为主流的时候,大家的目标都是为了能使对象得到重用,继承成为当时的最终表达。但当OO技术的不断发展,系统的不断复杂,多样化,继承开始力不从心了,使得继承被人们质疑,组合的概念慢慢走了出来。当讨论对象重用的时候,关于继承还是组合的讨论不断发展。

 
继承

  首先现实生活中,我们是如何使用重用的。雪糕有芒果,巧合力等口味。当我们制作这些雪糕的时候,通常都是先用牛奶搅拌然后怎样怎样,跟住就加水果,最后放进冰箱。我们发现,这些口味不一样的雪糕他们在制作的时候存在很多共同点,不同的地方就只有放的是什么水果。如果我们需要批量成产的时候为了加快生产效率通常都会先把之后牛奶味道的雪糕(通常称为原味,你会发现很多饮料都有这个味道)做出来。然后按照客户的需求直接用原味雪糕添加水果就完成了。
  这个生活例子中,我们的水果味道雪糕就继承了原味雪糕,使原味雪糕得到重用。不用每次制作雪糕的时候都要先制作原味雪糕。水果雪糕是(is a)牛奶雪糕。如果再来一个沙冰芒果雪糕,那么我们就继承芒果雪糕,再芒果雪糕的基础上加沙冰就完成了。
  开始的时候继承是很好的,因为他完成可以充分地做到重用。但是在程序设计中很难做到这点,尽管尽可能多地抽取出共性可以尽量接近实际生活,但也许并不能尽可能贴切地表示你的模型。抽取的越多,系统就会越复杂。

 
组合

  在我们现实生活中,一个对象包含令一个对象的情况,到处可见,一台电脑包含显示器、键盘..
  我们在重用的时候,只需要把一台电脑需要的对象全部做出来,当制作一台电脑的时候,把这些对象组合起来就完成了。然后组合这台电脑对象的显示器也可以用于电视机的组合中。显示器的重用非常明显。在编程中我们不需要花太多的精力在寻找对象的共性中,只需要把对象拆成一些功能单一的对象,然后分别完成这个对象,最后用这些对象组合起来。

 

  继承还有一个比较严重的问题,继承会使系统的耦合度增加(就是两个对象之间的关系非常密切,这个对象有什么变化会影响到继承他的对象),但子类继承了父类的一个行为。但父类的这个行为需要修改的话,那么跟着继承他的子类又会发生变化,如果这个子类又被其他对象继承了。那么这个父类改变了一点点整个系统都会跟着变化。就好像原味雪糕突然间不用牛奶来做,那么继承他的芒果雪糕就变化了。就不是以前的芒果雪糕了。同样继承芒果雪糕的沙冰芒果雪糕也会变化。

 

  很多人指出:应该尽量地使用组合,而只在必要的情况下才使用继承。书中提出:这种说法过于简化,作者认为,尽可能使用组合的思想隐藏一个实际问题:尽管更多情况下使用组合比使用继承更合适,但不能绝对地说尽可能使用组合。组合在大多数情况下比集成更适用,不过这并不意味着继承一无是处。组合可继承都可以使用,但只应在是适当的上下文中使用。

 

 

 

-------------
  这边博客拖的时间可真长啊。虽然拖了很长时间,但我还是认真地把它写完。当看完一章书的时候,书的内容你肯定懂,但过后就未必了,看完之后自己理解后,再把自己理解到的东西写出来,感觉比看第2编还好。
今天在淘宝上看上两件衣服,比较成熟点。感觉就快毕业了,出来工作自己的着装不能像读书的时候那样啦。大家看了给个意见
地址一:http://item.taobao.com/auction/item_detail.jhtml?item_id=d95f1c571d45da47b0154f90cfe38569&ali_refid=a3_419342_1006-419343_1007:1102258640:6:%C4%D0%D7%B0:4befa2025898dfdc285e61fcb10da9a0&ali_trackid=1_4befa2025898dfdc285e61fcb10da9a0

地址二:http://item.taobao.com/auction/item_detail-0db2-7c2560385fc9f68ab824cc6e5801bd40.htm

posted @ 2009-11-04 21:39  尐傑.net  阅读(156)  评论(0编辑  收藏  举报