3、在对象之间搬移特性

    1、Move Method(搬移函数)
      如果一个类有太多行为,或如果一个类与另一个类有太多合作而形成高度耦合,则考虑搬移函数。 这类函数有这种特点:使用另一个对象的次数比使用自己所驻对象的次数还多。
    2、Move Field(搬移字段)
      和搬移函数类似,某个字段被其所驻之外的另一个类类更多的用到,则考虑将该字段移到那个类中。
    3、Extract Class(提炼类)
      当某个类做了应该由两个类做的事情,则建立一个新类,将相关的字段和函数从旧类搬移到新类。
      特点: 1、类职责不唯一往往含有大量函数和数据。其中某些数据和某些函数总是一起出现,某些数据经常同时变化 甚至彼此相依。 2、类的子类化方式。
      建议:先搬走变量,然后搬走函数。
    4、Inline Class (将类内联化)
      当某个类没有做太多事情,可以将这个类所有特性搬移到另一个类中,然后移除原类。
    5、Hide Delegate (隐藏“委托关系”)
      客户通过一个委托类来调用另一个对象。在服务类上建立客户所需的所有函数,用以隐藏委托关系。
    6、Remove Middle Man(移除中间人)
      某个类做了过多的简单委托动作,让客户直接调用委托类
    7、Introduce Foreign Method(引入外加函数)
      你需要为提供服务的类增加一个函数,但你无法修改这个类。在客户类中建立一个函数,并以第一参数形式传入一个服务类实例。
      如果你发现自己为一个服务类建立了大量外加函数,或者发现许多类都需要同样的外加函数,则使用Introduce Local Extension(引入本地扩展)
    8、Introduce Local Extension(引入本地扩展)
      你需要为服务类提供一些额外函数,但你无法修改这个类,如果这样,你可以建立一个新类,使他包含这些额外函数。 让这个扩展品成为源类的子类或包装类。
      子类化(subclassing) 包装(wrapping)
    9、大纲

你可能感兴趣的:(java,设计模式,code,重构,clean)