以下是两个班级Temp1
和Temp2
的实施
我想知道
由于减少了代码的冗余,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;
}
}
答案 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;
}
}