组合/聚合复用原则

组合/聚合复用原则强调在软件设计中优先使用对象的组合或聚合而非继承。聚合关系是对象A持有对象B的弱引用,而组合关系则是对象A持有对象B的强引用,两者都允许在不继承的情况下调用引用对象的方法。继承可能导致封装性的破坏,增加耦合度,因此应谨慎使用。组合/聚合原则在设计模式中得到广泛应用,如组合模式、观察者模式等。
摘要由CSDN通过智能技术生成

组合/聚合复用原则

什么是组合/聚合原则?

聚合:A类持有B类的“”引用,这里的弱引用指的是可以被垃圾回收器回收,它具有短暂的生命周期,也就是说对象A持有对象B的引用,但是对象B不持有对象A的引用,但是B类和A类没有任何类层次关系。例如雁群持有大雁的弱引用,雁群可以有多只大雁,所以雁群和大雁是聚合关系。

组合:A类持有B类的“”引用,也就是说A类由B类组合而成,B类是A类必不可少的一部分,并且B类不会被垃圾回收器回收,它们具有相同的生命周期。例如大雁持有翅膀的强引用,翅膀是大雁不可分割的一部分,所以翅膀和大雁是组合关系。

(注意:组合指的是B类可以使A类中的一个List<A>集合,也可以是单个对象B)

组合/聚合复用优于继承

继承违背了开闭原则:继承打破了封装性,子类继承父类,那么父类的实现细节将完全暴露在子类当中,随着时间的推移,如果父类发生变化将会影响子类的也发生变化,所以在使用继承前,请确保子类是否完全是超类型的子类,即判断是否is-a,如果不是请不要使用继承。

无论是组合还是聚合,它们都持有对象的引用,在不继承类的前提下可以在内部调用引用的方法,这叫做转发,降低耦合度。

适当使用组合/聚合的好处就是明确每个对象的职责,滥用继承则是结构化的思想࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值