Java:需要一些关于代码重用的建议

时间:2014-02-19 22:07:45

标签: java refactoring reusability

我创建了这个大班,作为我完成作业的项目的一部分 该类包含数据成员以及一些方法,现在我需要创建另一个(几乎)相同的类。 它几乎完全相同,因为唯一的区别是代码中出现的常数。

例如,如果原始类具有:

for (int i=0; i<8; i++) {
    for (int j=0; j<8; j++) {
        labels[i][j]=new Label(panel, SWT.SHADOW_OUT);
        labels[i][j].setImage(empty);
    }
}

新班级应该:

for (int i=0; i<10; i++) {
    for (int j=0; j<10; j++) {
        labels[i][j]=new Label(panel, SWT.SHADOW_OUT);
        labels[i][j].setImage(empty);
    }
}

如果原始类有:

labels=new Label[8][8];

新班级应该:

labels=new Label[10][10];

意味着唯一的区别是10而不是8,在代码中多次。

我可以在哪里重复使用代码?
有没有人有一些想法?

2 个答案:

答案 0 :(得分:5)

只需使用类属性:

public class MyClass {
    private final int labelsSize;
    private final Label[][] labels;
    public MyClass(final int labelsSize) { 
        this.labelsSize = labelsSize;
        this.labels = new Label[labelsSize][labelsSize];
    }
    // ...
    for (int i=0; i<labelsSize; i++) {
        for (int j=0; j<labelsSize; j++) {
            labels[i][j]=new Label(panel, SWT.SHADOW_OUT);
            labels[i][j].setImage(empty);
        } 
    }
}

答案 1 :(得分:2)

您可以传入该数字(8或10)作为此方法的参数,或作为构造函数的参数传递。然后将其设置为实例变量并在此代码中访问它。