- 同一类中的不同函数具有相同表达式,直接采用Extract Method(提炼函数)提炼重复的代码。
- 两个互为兄弟的子类含有相同的表达式。
- 首先采用Extract Method(提炼函数)提炼重复的代码。
- 然后再对提炼的代码使用Pull Up Method(方法上移),将它移入父类。
- 两个互为兄弟的子类代码类似,并非完全相同。
- 首先采用Extract Method(提炼函数)区分相同部分和差异部分代码,构成单独函数。
- 运用Form Template Method(塑造模板函数)获得一个Template Method设计模式。
- 使用Substitute Algorithm(替换算法)将其他函数的算法替换掉。
- 两个毫不相干的类含有相同的代码。
- 对其中一个类考虑使用Extract Class(提炼类),将重复的代码提炼到一个独立的类中,然后在另一个类中使用这个新类。或者重复代码的函数属于第三个类,这两个类都引用第三个类。