java - 类的不同实现

标签 java oop

下面是两个类的实现Temp1Temp2 .
我想知道 Temp2类比 Temp1 好因为减少了代码的冗余。
使用 Temp2 有更多优势吗?类而不是 Temp1

临时 1:

    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;   
    }

}

临时2:

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;
}

}

最佳答案

您应该像这样实现它以减少冗余(转换为一些有效的 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;    
    }
}

关于java - 类的不同实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37172138/

相关文章:

java - Android ListView - onItemClickListener

php - php中mysql的过程化和面向对象实现的区别?

java - OOP的缺点?

java - 我的代码有什么问题?我想在Android中制作 'card-flip'动画

java - 读取文本文件(约 90,000 个单词)并尝试将每个单词添加到字符串 ArrayList 中

java - 使用 chardet 检测带有 JDBC 的 MySQL 数据库中的错误编码

oop - 为什么父类无法访问子类成员

python - 在 ParallelPython 中,对象的方法 ( object.func() ) 无法操作对象的变量 ( object.value )

java - Java 中的动态类加载(枚举)

java - 在桌面应用程序上使用 Google Maps API