继承和组合对比

一、原理:

        继承:is-a关系,面向对象四大特征之一

        组合:has-a关系,创建引用对象使用

二、优点:

        继承:无需创建类对象直接使用;可重写父类

        组合:和引用类低耦合;可动态组合多个类;

三、缺点:

        继承:破坏单一原则,父类细节暴露给子类;破坏接口隔离原则,父类修改实现,子类需要修改;子类依赖父类耦合度高;不支持动态扩展(编译期定型)

        组合:创建对象需要创建引用对象

四、选择探讨:

                1、实现继承:Child child= new Child(); 使用时,面对子类使用,这种情况非强依赖父类,不推荐使用继承,可采用组合编程。设计模式:装饰者模式(decorator pattern)、策略模式(strategy pattern)、组合模式(composite pattern)

                2、接口继承:Parent parent = new Child();使用时,面对父类使用,这种定义类的统一结构,例如模版模式(template pattern还是建议采用继承

在实际的项目设计中,根据具体情况,来选择封装和组合。结构稳定、层次较浅、关系不复杂还是建议采用继承,反正建议组合。具体场景具体应用

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值