软件构造-博客4:复习心得之“复用”

继承和委托是软件开发中的两种复用策略。继承允许子类扩展父类的功能,适用于主题结构相似且无冲突的情况,需遵循LSP原则。委托则是通过持有另一类的实例来使用其方法,适合于仅需部分功能的情况,可分为临时性和永久性。选择合适的方式能有效提高代码的灵活性和可维护性。
摘要由CSDN通过智能技术生成

一、继承与委托

继承(inheritanc)和委托(delegation)是两种常见的复用方式。

        简单来说,继承是子类继承父类的属性、方法,可以添加新的属性、重写或重载父类的方法,或添加新的方法,在父类的基础上改动代码,以适应新的要求;委托是将一个类A作为另一个类B的属性,或在B中使用某方法时通过传入类A来使用A中的方法,达到代码复用的目的。

从适用性来讲,当两个类的主题结构相似,并且新类型和原类型没有冲突是适合使用继承,而新类型只用到原类型一小部分代码时适合使用委托,因为这可以避免将原类型的大量代码链接到新类型中。

 

在使用继承时,子类和父类应当符合LSP原则,即所有需要使用父类的地方都可以由子类代替,在实际重写父类方法时要做到:(1)子类的范围修饰符比父类更广;(2)子类的返回值协变;(3)子类的参数类型逆变(Java中需相同);(4)子类的异常类型协变;(5)父类不变量要保持;(6)规约更强(前置条件不能强化、后置条件不能若化)等等。

        而在使用委托时,分为临时性委托和永久性委托两种类型,临时性委托只在调用方法时将待使用的类作为参数是传入,方法执行完毕委托即截止;

永久性委托通常将待使用的类作为待设计类一个属性,贯穿待设计类的始终,还可以根据可变化的程度进一步区分。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值