重构——39以多态取代条件表达式(Replace Conditional with Polymorphism)

本文介绍如何通过多态来重构包含多个条件分支的函数,将其转换为一系列子类中的覆写方法,从而简化代码并提高其面向对象特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以多态取代条件表达式(Replace Conditional with Polymorphism)

你手上有个条件表达式,它根据对象类型的不同而选择不同的行为;将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始的函数声明为抽象函数

一、动机

1、面向对象术语中,听上去最高贵的词非多态莫属

2、正因为有了多态,所以你会发现,类型码的switch语句以及基于类型名称的if-then-else语句在面向对象程序中很少出现

二、做法

1、Replace Type Code with Subclass,Replace Type Code with State/Strategy

2、如果要处理的条件表达式是一个更大函数的一部分,先Extract Method

3、如果有必要,使用Move Method将条件表达式放置到继承结构的顶端

4、任选一个子类,在其中建立一个函数,使之覆写超类中容纳条件表达式的那个函数,将与该子类相关的条件表达式分支复制到新建函数中,并对它进行适当调整

5、为了顺利进行这一步骤,你可能需要将超类中的某些private字段声明为protected

6、编译,测试

7、在超类中删掉条件表达式内被复制的分支

8、编译,测试

9、针对条件表达式的每个分支,重复上述过程,直到所有的分支都被移到子类内的函数为止

10、将超类之中容纳条件表达式的函数声明为抽象函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值