何谓统一接口,就是需要一个与子类具有相同接口的超类接口。找到所有子类含有而超类没有的公共方法。把这些方法复制到超类中,并修改每个方法,使其执行空行为。那么,我们在重构过程中实现统计接口的动机是什么呢?
为了多态地使用对象,对象的类需要共享一个通用的接口,无论是超类还是真正的接口。重构就是为了解决一个超类或接口需要含有与其子类相同的接口的情况。
一般在两种场合下需要使用这一重构技术。一种情况是,将装饰功能搬移到Decorator重构时,一个形成中的Decorator需要与其子类相同的接口。为了达到这一点,最简单的方法就是应用统一接口重构。类似的,将聚集操作搬移到Visitor重构的过程中如果某些对象可以共享同一接口,就可以去除重复代码,而这正是统一重构能够做到的。
对超类和子类应用这一重构后,有时会在超类上应用提炼接口重构,产生一个单独的接口。当抽象基类含有状态字段,而不希望这个通用基类的实现类,如一个Decorator,继承这些字段时,才会这么做。
统一接口重构通常只是为达到其他目的的途中的一个临时步骤。例如,执行了这一重构之后,可能还会执行一系列的重构来去除在统一接口时添加的方法。其他时候,在应用了提炼接口重构之后,抽象基类中的某个方法的默认实现可能就不再需要了。
网友评论