重构读书笔记-11_8_Extract_Interface
重构第十一章
8.Extract Interface(提炼接口)
若干客户使用class接口中的同一子集;或者,两个classes的接口有部分相同。将相同的子集提炼到一个独立接口中。
【重构读书笔记-11_8_Extract_Interface】Example:
double charge(Employee emp, int days) {
int base = emp.getRate() * days;
if(emp.hasSpecialSkill())
return base * 1.05;
else return base;
}
End:
interface Billable {
public int getRate();
public boolean hasSpecialSkill();
}class Employee implements Billable...double charge(Billable emp, int days) {
int base = emp.getRate() * days;
if(emp.hasSpecialSkill())
return base * 1.05;
else return base;
}
Conclusion: Extract Superclass(提炼超类)和Extract Interface(提炼接口)有很多的共通之处;Extract Superclass(提炼超类)提炼了classes中的重复代码;Extract Interface(提炼接口)只是提炼了classes中的接口,重复代码没有被消除,这个时候可以使用Extract Class(提炼类)的方法来将共同行为提炼出去,然后通过接口提供给其他客户使用。
Extract Superclass(提炼超类)比较简单,不过每个class只能有一个超类,但可以有多个interface。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- “成长”读书社群招募
- Android中的AES加密-下
- 【0212读书感悟】
- 【读书笔记】贝叶斯原理
- 【韩语学习】(韩语随堂笔记整理)
- 2018-07-27读书心得
- 人性的弱点-笔记
- 读书笔记:博登海默法理学|读书笔记:博登海默法理学 —— 正义的探索(1)
- D034+3组苏曼+《写作这回事》读书笔记