反向重构:函数上移(350)
class Employee {
get quota {...}
}
class Engineer extends Employee {...}
class Salesman extends Employee {...}
class Employee {...}
class Engineer extends Employee {...}
class Salesman extends Employee {
get quota {...}
}动机
如果超类中的某个函数只与一个(或少数几个)子类有关,那么最好将其从超类中挪走,放到真正关心它的子类中去。这项重构手法只有在超类明确知道哪些子类需要这个函数时适用。如果超类不知晓这个信息,那我就得用以多态取代条件表达式(272),只留些共用的行为在超类。
做法
将超类中的函数本体复制到每一个需要此函数的子类中。
删除超类中的函数。
测试。
将该函数从所有不需要它的那些子类中删除。
测试。