一天一个重构方法(39):以多态取代条件式
2009-10-17 17:06:14摘要:Replace conditional with Polymorphism:以多态取代条件式 多态(Polymorphism)是面向对象编程的基本概念之一。在这里,是指在进行类型检查和执行某些类型操作时,最好将算法封装在类中,并且使用多态来对代码中的调用进行抽象。 阅读全文
摘要:Replace conditional with Polymorphism:以多态取代条件式 多态(Polymorphism)是面向对象编程的基本概念之一。在这里,是指在进行类型检查和执行某些类型操作时,最好将算法封装在类中,并且使用多态来对代码中的调用进行抽象。 阅读全文
摘要:Replace Inheritance with Delegation:以委托取代继承 某个子类只使用父类接口中的一部分,或者根本不需要继承而来的数据。在子类中新建一个字段用以保存父类;调整子类方法,令它改成委托父类;然后去掉两者之间的继承关系。 阅读全文
摘要:Collapse Hierarchy:折叠继承体系 所谓重构继承体系,往往是将方法和字段在体系中上下移动。完成这些动作后,你很可能发现某个子类并未带来该有的价值,因此需要把两个类合并。 阅读全文
摘要:Encapsulate Collection:封装群集 有个方法返回一个群集。让这个方法返回该群集的一个只读映件,并在这个类中提供添加/删除(add/remove)群集元素的方法。因此,以可迭代但不直接在集合上进行操作的方式来暴露集合,是个不错的主意。我们来看代码: 阅读全文
摘要:Remove Middle Man:删除中间人 有时你的代码里可能会存在一些“Phantom”或“Ghost”类,Fowler 称之为“中间人(Middle Man)”。这些中间人类仅仅简单地将调用委托给其他组件,除此之外没有任何功能。就应该删除这个类,让客户直接调用受托类。 阅读全文
摘要:Extract Interface:提炼接口 如果你发现多于一个类使用另外一个类的某些方法,引入接口解除这种依赖往往十分有用。该重构实现起来非常简单,并且能够享受到松耦合带来的好处。 阅读全文
摘要:Extract Subclass:提炼子类 当一个类中的某些方法并不是面向所有的类时,新建一个子类,将只属于某些实体的方法提炼到新建的子类中。 阅读全文
摘要:Extract Superclass:提炼父类 两个类做类似的事情。可以为这个两个类建立一个父类,将相同特性移至到父类。 阅读全文
摘要:Replace Magic Number with Symbolic Constant:以常量取代特殊数值 在计算科学中,经常会出现一些特殊数值,比如圆周率。如果你需要在不同的地方引用一个特殊数值,不要直接用这个字面数值,请创造一个常量,根据其意义为它命名,并将这个字面数值替换为这个常量。 阅读全文
摘要:Move Method:搬移方法 你的程序中,有个方法与所驻class之外的另一个class进行更多交流:调用后者,或被后者调用。那么请将方法迁移到合适的class中。 阅读全文