java - 如何避免java中半重复的方法组?

标签 java methods reflection dry

假设我编写了以下方法:

public void submitForm1() {
        open();
        setField(1, "blah");
        setField(3, "bla");
        setField(4, "blah blah");
        submit();
    }

public void submitForm2() {
        open();
        setField(1, "blah");
        checkBox(1 , true);
        submit();
}

....

public void submitForm100() {
        open();
        setField(1, "bla");
        setField(2, "bla bla");
        setField(3, "blah");
        setArea(1, "blah blah");
        submit();
}

这些方法让我感觉自己在不断重复自己。我觉得应该这样写:

public void submitForm1() {
        MyMethods.submitForm(
            {SET_FIELD, 1, "blah"},
            {SET_FIELD, 3, "bla"},
            {SET_FIELD, 4, "blah blah"}
        );
    }

public void submitForm2() {
        MyMethods.submitForm(
            {SET_FIELD, 1, "blah"},
            {CHECKBOX, 1, true}
        );
}

....

public void submitForm100() {
        MyMethods.submitForm(
            {SET_FIELD, 1, "bla"},
            {SET_FIELD, 2, "bla bla"},
            {SET_FIELD, 3, "blah"},
            {SET_AREA, 1, "blah blah"},
        );
}

这样我就不必一遍又一遍地重复所有这些打开和提交方法。

有办法做到这一点吗?

最佳答案

例如,您可以使用“回调”。为此,请执行以下操作:

void doInSubmit(SubmitCallback callback)
{
    open();
    callback.call();
    submit();
}

外面:

public void submitForm100() 
{
    doInSubmit(new SubmitCallback() 
    {
        void call()
        {
            setField(1, "bla");
            setField(2, "bla bla");
            setField(3, "blah");
            setArea(1, "blah blah");
        }
    })        
}

关于java - 如何避免java中半重复的方法组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626807/

相关文章:

java - 在 block 中连续使用相同的方法会重新计算该方法吗?

JAVA - 使用来自另一个方法类的方法

iphone - 如何调用另一个类的方法?

java - 使用 Java 反射更新字段值

具有多个源的 Java 命令行编译

java - JUnit 测试中的父类

java - getParameters() 应该返回一个数组,并且此代码应该在 jdk 7 maven 项目中成功

java - 当传递枚举的字符串值时,如何在运行时访问任何已知枚举的值?

java - **线程 "main"java.util.InputMismatchException 中出现异常**

java - 在java中使用for循环时变量的范围 - eclipse/编译器错误?