时间:2016-05-11 19:56:16

标签: java oop

以下是两个班级Temp1Temp2的实施  我想知道 由于减少了代码的冗余,Temp2类优于Temp1 使用Temp2类而不是Temp1会有更多优势吗?

TEMP1:

    class Temp1 {

    String var1, var2, var3, var4;

    method1()
    {
    var1 = "m1_1";
    var2 = "m1_2";
    var3 = "m1_3";
    var4 = "m1_4";
    }

    method2()
    {
    var1 = "m2_1";
    var2 = "m2_2";
    var3 = "m2_3";
    var4 = "m2_4";  
    }

    method3(a,b,c,d)
    {
    var1 = a;
    var2 = b;
    var3 = c;
    var4 = d;   
    }

}

TEMP2:

class Temp2 {

String var1, var2, var3, var4;

method1()
{
assign_values("m1_1","m1_2","m1_3","m1_4");
}

method2()
{
assign_values("m2_1","m2_2","m2_3","m2_4");
}

method3(a,b,c,d)
{
assign_values(a,b,c,d);
}

assign_values(p,q,r,s){
var1 = p;
var2 = q;
var3 = r;
var4 = s;
}

}

1 个答案:

答案 0 :(得分:2)

您应该像这样实现它以减少冗余(转换为一些有效的Java代码):

public class Temp {

    public String var1, var2, var3, var4;

    public void method1() {
        method3("m1_1", "m1_2", "m1_3", "m1_4");
    }

    public void method2() {
        method3("m2_1", "m2_2", "m2_3", "m2_4");
    }

    public void method3(String a, String b, String c, String d)
    { 
        var1 = a;
        var2 = b;
        var3 = c;
        var4 = d;    
    }
}

当然,这个课程并没有多大意义,并且所有变量和方法名称都被严格选择,但这可能不是你的观点。

实际上,这三种方法都应该作为构造函数来实现。唯一的问题是你不能有两个不同的默认构造函数(没有参数的构造函数)。但您可以使用工厂方法:

public class Temp {

    public String var1, var2, var3, var4;

    public static Temp method1() {
        return new Temp("m1_1", "m1_2", "m1_3", "m1_4");
    }

    public static Temp method2() {
        return new Temp("m2_1", "m2_2", "m2_3", "m2_4");
    }

    public Temp(String a, String b, String c, String d)
    { 
        var1 = a;
        var2 = b;
        var3 = c;
        var4 = d;    
    }
}