java的聚合
① java中类与类之间的关系
类与类之间最常见的关系主要有三种:依赖(uses-a)、聚合(has-a)和继承(is-a)。
下面以在线书店订单系统为例,来详细的讲述这三种关系的概念。
在线书店订单系统的主要功能是:注册用户可以登录到网上书店选购图书,在线填写订单,并支付购书款。书店确认已经收到购书款时,按用户留下的地址邮寄图书。可以在这个系统中建立几个类,有图书(book)、账户(account)、订单(order)、地址(address)等,如下图所示:
继承
继承就是一个类能调用另一个类的所有数据成员,并在当前类中不需要再重新定义,本章已经讲得很明白了。
② java 聚合和组合的区别
组合:部分与整体是与生俱来的,部分的存在依赖于整体。比如人与人的某个器官,人一出生,器官就在,人死亡,器官也就没了意义。
聚合:你与你的电脑(或者其它物品),电脑是属于你的吧,但是你是一出生就拥有了电脑吗,电脑是某个厂商生产出来的,然后你买过来才成为了你的一部分。你死了以首举灶后,电脑也可以送给别人继续用啊!这就不叫做其存亡了,所以这是聚合。
这个是结合我之前看过的设计模式所想到的,如果你了解过设计模式,则会更容易明白我说的是什么了,比如有一种设计模式叫做责任链者扮模式,责任链中的处理者往往是先创建出来,然后再把引用传到另一个责任处理对象作为责任接班人,这就用答册到了聚合的思想吧。
另外,《thinking inJava》里面是这样说的,“composing a new class from existing classes, this concept is called composition (if the composition happens dynamically, it's usually called aggregation)”。
意思是通过现在的类组合成一个新的类,叫做组合,如果这种组合是动态的,则叫聚合。如何理解”动态“,也就是可以随时加进来也可以随时删除,拿上面的人与电脑的例子来说,电脑可以随时扔掉,也可以随时加进来,人的生命不会受到威胁,但是人如果少了某个器官,则会危及到生命了!其实现实中的例子与Java中的概念还是有一点出入,类比只能是接近真相。