重构二--在对象之间搬移特性(Move Field)(3)--作法

重构二--在对象之间搬移特性(Move Field)(3)--作法
作法(Mechanics)
    • 如果field的属性是public,首先使用Encapsulate Field(206)将它封装起来。
        • ==》如果你有可能移动那些频繁访问该field的函数,或如果有许多函数访问某个field,先使用Self Encapsulate Field(171)也许会有帮助。
    • 编译,测试。
    • 在target class中建立与source field相同的field,并同时建立相应的设值/取值(setting/getting)函数。
    • 编译target class。
    • 决定如何在source object中引用target object。
        • ==》一个现成的field或method可以助你得到target object。如果没有,就看能否轻易建立这样一个函数。如果还不行,就得在source class中新建一个field来存放target object。这可能是个永久性修改,但你也可以暂不公开它,因为后续重构可能会把这个新建field除掉。
    • 删除source field。
    • 将所有[对source field的引用]替换为[对target适当函数的调用]。
        • ==》如果是[读取]该变量,就把[对source field的引用]替换为[对target取值函数(getter)的调用];如果是[赋值]该变量,就把[对source field的引用]替换成[对设值函数(setter)的调用]。
        • ==》如果source field不是private,就必须在source class的所有subclasses中查找source field的引用点,并进行相应替换。
    • 编译,测试。

你可能感兴趣的:(重构二--在对象之间搬移特性(Move Field)(3)--作法)