重构手法之在对象之间搬移特性【1】

Move Method(搬移函数)

Move Field(搬移字段)

1Move Method(搬移函数) 概要

你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被或者调用。

在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或是将旧函数完全移除。

动机

如果一个类有太多行为,或如果一个类与另一个类有太多合作而形成高度耦合,又或者使用另一个对象的次数比使用自己所驻对象的次数还多。那就要搬移函数。

搬移函数时,要根据“这个函数与哪个对象的交流比较多”来决定其移动路径。

范例

用一个表示“账户”的Account类来说明这项重构

class Account { private AccountType _accountType; private int _daysOverdrawn; /// <summary> /// 透支金额计费规则 /// </summary> /// <returns></returns> double OverdraftCharge() { if (_accountType.IsPremium()) { double result = 10; if (_daysOverdrawn > 7) { result += (_daysOverdrawn - 7) * 0.85; } return result; } return _daysOverdrawn * 1.75; } double BankCharge() { double result = 4.5; if (_daysOverdrawn > 0) { result += OverdraftCharge(); } return result; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspzsg.html