继续组合
进一步介绍组合(聚合),存在has - a 关系
使用组合的原因是,可以通过结合相对简单的部分构建系统或者对象中共性不明显的系统。组合在其他方面好处也很明显,你可以随便替换部件,台式电脑为例。显示器你可以换,键盘鼠标你也可以换,只要符合你电脑的接口要求,你可以随意更换台式电脑的部件。同时组合的另一个方面可使一个系统的功能更加强大。例如我们为台式电脑组合进一张电视卡,我们的电脑就可以用来观看电视节目了。
根据上面提到的两个方面,我们可以总结出组合的两种表现形式同样它们各自有自己的优缺点。
聚集(还是沿用书的名词)
这是一种比较直观的表现方法,聚集就是指一个复杂的对象有其他对象组成。台式电脑的主机、手提电脑,这样的一个复杂的对象,他有很多相对的对象组合成,cpu,显示卡等等。使用聚合来达到组合,我们并不少见,一台车、一台手机、就像你,人类。同时将很多个对象来组建这样的一个复杂对象,组合的对象就包含这个小对象的全部属性与行为。聚集对象越多,那么这个对象的能力就越强,能解决的事情就越多。这是它的一个优点,同时越是这样多的话,他的缺点也非常明显,但聚集的其中一个小对象出现问题,不能正常工作的时候,这个复杂的对象也就跟着不能工作。聚集的小对象越多,出错的几率就越高。就好像手提电脑,你随便一个地方出现问题那么你就要整台机拿出去维修了。
关联
关联会同时表示整体和部分。在台式电脑中,键盘鼠标等设备都是通过数据线连接的,他们没一个部分都是一个独立的对象。利用数据线来实现组合。他的优点就是聚集的缺点,当这个系统其中一个独立的对象出现问题,他只需要把出现问题的子对象更换,整个系统就可以继续工作。这里又带出了一个问题,更换的这些独立的对象必须有统一的接口,如果找不到能实现某个功能的独立对象,这个系统就实现不了这个功能。
结合使用关联和聚集
鱼跟熊掌在这里好像各都能得到一些,在设计一个系统的时候如果要用到组合,就同时使用聚集跟关联来实现组合。还是举台式电脑的例子,首先关联的是显示器、键盘鼠标、音箱。聚集的是电脑的主机,里面有cpu、显卡、主板等。将一些需要经常维护的部分使用关联,对一些固定的,不容易更改的部分,这里通常说系统的核心,使用聚集。
接着就是一堆例子啦。没做笔记的必要了。
--------------------
看了一个多星期的面向对象了,感觉看的时候觉得很容易,当真正需要使用它的时候就感觉摸不着边。看来需要更多的练习才可以啊。做一个程序员不是那么简单的事啊。加油吧。
中午设计自己的毕业设计的系统,想到我头都晕啦。看不着摸不着,我要征服你。。。。
从化的天气真多变,前几天两件衣服,这两天居然穿短袖了。换季的天气很容易生病,要注意身体哦!