1、最简单的情况
同一个类中,两个函数含有相同的表达式。
解决:这时候就要提出相同的代码,让这两个地方都调用这段被提炼出来的代码。
运用方法:Extract Method(提炼方法)
2、另一种常见的情况
两个互为兄弟的子类内还有相同的表达式。
解决:先提炼出重复的代码,进行封装------------Extract Method(提炼方法)
在把提炼出来的代码推入到超类内-----------Pull Up Method(函数上移)
要用这段被提炼出来的代码时,就调用父类的。
3、如果两个互为兄弟的子类内含有的代码之间只是类似。
解决:将相似和差异的代码分开,构成一个单独的函数(相似的代码