Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
重构手法(二) —— 在对象之间搬移特性

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站


    在对象之间搬移特性

    Move Method
    如果一个方法与其source class之外的另一个class进行更多的交流(调用或者被调用),就在另一个class中建立一个类似行为的新方法。将原来的方法变成一个委托方法(delegating method),或者将其完全删除。
    在搬移过程中,如果该方法需要使用source class的特性,有以下几种选择:
    1、将该特性也移到target class
    2、建立或使用一个从target class到source class的引用关系
    3、讲source object 当作参数传给target method
    4、如果需要特性是个变量,将它作为参数传给target method

    Move Field
    如果一Field被其source class之外的另一个class进行更多的用到。就在target class中建立一个新的Field,修改source field的所有用户,令它们改用新的field。
    必须删除source field才能保证访问函数的确改变了操作对象。

    Extrat Class
    一个class做了过多的工作,就应建立一个新的class,将多余特性相关的Field和Method从source class搬移到target class。
    一个class应该是一个清楚的抽象,处理一些明确的责任。
    
    Inline Class
    如果一个class没有做太多的事情(没有承担足够的责任),就将此class的所有特性搬移到另一个class中去,然后删除原class。

    Hide Delegate
    在server端(某个class)建立客户所需的所有函数,用以隐藏委托关系(delegation)。
    可以在server端放置一个简单的委托方法,将委托关系隐藏起来。这样即便将来发生了委托关系上的变化,变化将被限制在server中,不会涉及到客户。

    Remove Middle Man
    某个class作了过多的简单委托动作。可以让客户直接调用委托类。
    为了方便起见,我们可能想要保留一部分委托关系。此外我们也可能希望某些客户隐藏委托关系,并让另一些用和直接使用委托对象。基于这些原因,一些简单的委托关系也可能被留在原地。

    Introduce Foreign Method
    在使用server class中需要额外的方法,但是却无法修改此class。可以在client class中建立一个方法,并以这个server class实体作为第一引数(argument)。
    如果发现自己为一个server class建立了大量的外加方法,或者发现有许多class都需要同样的外加方法,就不要使用此项重构,改用Introduce Local Extension。

    Introduce Local Extension
     在使用server class中需要一些额外的方法,但是却无法修改此class。可以建立一个新的class,使它包含这些额外的方法。让这个扩展class成为source class的subclass或wrapper(外覆类)。
    所谓的local extension,是一个独立的class,但也是其extended class的subtype(这里的subtype不同于subclass:它和extended class并不一定存在严格的继承关系,只要能够提供extended class的所有特性即可)。
    一般来说不要在extension class中覆写original class的方法,只添加新的方法。
    




相关文章

相关软件