[设计原则2] 优先使用组合(续)

  • 继承的优点和缺点
    优点:
            容易进行新的实现,因为其大多数可继承而来。
            易于修改或扩展那些被复用的实现。
    缺点:
            破坏了封装性,因为这会将父类的实现细节暴露给子类。
           “白盒”复用,因为父类的内部细节对于子类而言通常是可见的。
           当父类的实现更改时,子类也不得不会随之更改。
           从父类继承来的实现将不能在运行期间进行改变。

        从上面的比较来看,组合总体上优于继承,但也不能完全取代继承。

  •  Coad规则       
  • 仅当下列的所有标准被满足时,方可使用继承:

    子类表达了“是一个…的特殊类型”,而非“是一个由…所扮演的角色”。
           子类的一个实例永远不需要转化(transmute)为其它类的一个对象。
           子类是对其父类的职责(responsibility)进行扩展,而非重写或废除(nullify)。
           子类没有对那些仅作为一个工具类(utility class)的功能进行扩展。
           对于一个位于实际的问题域(Problem Domain)的类而言,其子类特指一种角色(role),交易(transaction)或设备(device)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值