11.2pull up method(函数上移)

本文探讨了如何识别并统一不同子类中的重复函数,通过将这些函数提升至基类来减少代码冗余,提高代码复用性和维护性。

动机:

某个函数在各个子类中的函数体都相同。

若干处于不同子类内的函数,而它们又可以通过某种形式的参数调整成为相同的函数。

子类的函数覆写了超类的函数,但却仍然做相同的工作。

被提升的函数可能会引用只出现于子类而不出现于超类的特性。如果被引用的是个函数,你可以将该函数也一同提升到超类,或者在超类中建立一个抽象函数。

如果两个函数相似但不相同,或许可以先借助form template method构造成相同的函数,然后提升它们。

做法:

检查待提升函数,确定它们是完全一致的。

=》如果这些函数看上去做了相同的事,单并不完全一致,可使用substitute algorithm让它们变得完全一致。

如果待提升函数的签名不同,将那些签名都修改为你想要在超类中使用的签名。

在超类中新建立一个函数,将某一个待提升函数的代码复制到其中,做适当调整,然后编译。

=》如果使用强类型语言,而待提升函数又调用了一个只出现于子类而未出现于超累的函数,可以在超类中为被调用函数声明一个抽象函数。

=》如果待提升函数使用了子类的一个字段,可以使用pull up field将该字段也提升到超类;也可以先使用self encapsulate field,然后在超类中把取值函数声明为抽象函数。

移除一个待提升的子类函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值