Move Accumulation to Collecting Parameter
当在一个方法中运行一大堆代码对一个变量进行累加(例如字符串变量),可以将这个方法分解为多个易于理解的小方法(Compose Method),并给这些方法传入同一个Collection Paameter(例如StringBuilder)。
Extract Composite
当不同子类中实现了相同的Composite,将这个Composite分解出来到一个父类中去。
这时消除重复代码的一个特列,所有在子类中的重复代码都应该考虑抽象到父类中去。
Replace one/many Distinction with Composite.
当一个类中有一个处理单个对象的方法,同时还有一个类似的处理这个对象集合的方法,这样会产生一些问题,例如重复代码,用户访问不统一,Merging of result.
也可以把单个对象作为一个特殊的集合传入处理集合对象的方法,这样可以解决代码重复的问题,但是不能解决另外两个问题。