请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

银行与账户是组合还是聚合呢?

老师您好,您说银行和账户,或者说桥接模式是一种组合模式,IDEA给出的UML类图也是显示组合模式。可是银行和账户的生命周期可以不一样啊,因为账户是通过银行的构造方法传入的,那么完全可以写出这样的代码:
Account account = new SavingAcount();
Bank bank = new ICBCBank(account);
bank = null;
此时account并不会因为bank为空而自己为空。我理解,只要成员变量是可以通过外部设置的,无论是构造方法还是set方法,都会造成上面的局面,除非使用弱引用,达成生命周期一致。而生命周期是否一致,是我看了您前面的课程后,区分组合和聚合的主要区别,比如鸟和翅膀是组合,鸟没有了翅膀也没有了,比如链表或树结构里面往往有个Node对象,他们是生命周期一致的,也是典型的组合关系,我们从链表或树的外部,无法赋值Node,也就无法劫持引用。那银行和账户到底是组合还是聚合呢。。。

正在回答

1回答

同学,最显著的区别就是聚合是可以分离后独立存在的,组合是分离后即消亡。假如你这个Account是一个内部类,那就是组合关系,假如外面可以单独创造使用,那就是聚合关系。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信