设计模式:重构这些代码

时间:2012-05-30 16:20:31

标签: java oop design-patterns java-ee refactoring

我打算重构下面的代码

1.Class A_Builder to build A_Model

Class A_Builder{
public A_Model build(arg1){
//build A_Model
}
}


2.Class B_Builder to build B_Model

Class B_Builder{
public B_Model build(arg2,arg3){
//build B_Model
}
}

3.Class C_Builder to build C_Model
Class C_Builder{
public C_Model build(arg4){
//build C_Model
}
}

4.Class D_Builder...

一个用于构建模型的构建器,因此我计划使用命令模式来重构它们,将构建方法作为命令,但如何处理不同的变量数,如A是(arg1),B是(arg2,arg3)

或任何想要重构这些代码的想法?提前感谢。

1 个答案:

答案 0 :(得分:0)

您尚未指定所使用的语言,但我遇到的大多数语言都支持overloading of functions

这意味着您可以使用相同的名称声明两个单独的函数,但使用不同的参数,然后语言将检查您在进行函数调用并执行相应函数时传递的参数:

class Builder {
    public build( arg ) {
        // Build A Model
    }

    public build( arg, arg ) {
        // Build B Model
    }

    ...
}

或者,如果函数参数都是相同的变量类型,则可以简单地创建一个接受参数数组的函数。数组可以是可变长度的,因此您的单个函数可以执行不同的操作,具体取决于数组的长度:

class Builder {
    public build( arg[] ) {
        switch( arg.length ) {
            case 1:
                // Build A Model
                break;
            case 2:
                // Build B Model
                break;
            ...
        }
    }
}