我有这个问题,我的代码中有几个部分,我检查是否满足这些条件,以便我能理解我检查的是一种类型还是另一种。这最终变得很大,如果是其他树,因为我正在进行大量的检查,每个方法中的相同检查,并且我正在检查的事物有几种不同的类型。这个我知道可以使用对象解决! 具体来说,我正在检查的是来自文件的4个字符串值。根据这些字符串值,4个字符串可以组成3种类型中的一种。每次我需要获得4个字符串组成的类型时,我不想进行相同的检查,我想知道是否可以在给定这4个字符串的情况下创建一个通用对象,然后确定该对象是否是特定类1,2的实例,或3.然后我就可以将该一般对象转换为特定对象。
假设我将4个字符串创建的一般对象命名为Sign。我将采用这4个字符串并创建一个新的Sign对象:
Sign unkownType = new Sign(string1, string2, string3, string4);
我需要检查这个标志的特定类型的标志。
编辑: 更多细节,我正在检查的标志不是像“+”或“ - ”这样的符号,它们是带有文字的标志,就像你在路上看到的那样。每个符号上有4行,需要检查它们以查看每行是否符合特定类型的符号。 SignType1的第一行与SignType2的第一行不同,我想取这4行(Strings)并将它传递给一个对象,并在我的代码中使用该对象从中获取值而不是相同检查每种方法。 如果你想让我展示一些代码,我可以,但它没有多大意义。
答案 0 :(得分:2)
您似乎要求的是工厂模式
public interface ISign {
public void operation1();
public void operation2();
}
和一个Factory类,用于根据输入
生成类public class SignGenerator {
public static ISign getSignObject(String str1,String str2, String str3, String str4) {
if(str1.equals("blah blah"))
return new FirstType();
if(str1.equals("blah blah2") && str2.equals("lorem ipsum"))
return new SecondType();
return new ThirdType();
}
}
public class FirstType implements ISign {
}
public class SecondType implements ISign {
}
public class ThirdType implements ISign {
}
在这些类中实现所有类型特定的逻辑,这样您就可以调用它们而无需先检查大量的if..else子句
答案 1 :(得分:0)
从我的陈述中收集到的。 说:如果给定的字符串等于您指定的whateva值,则创建返回某个对象的方法
//provided the objects to be returned are subtypes of Sign
public Sign getInstance(String first, String second, String third, String fourth)
{
if(first==null || second==null || third==null || fourth===null )
return null;
if(compare1.equals(first))
return new SignType1();
else
if(compare2.equals(second))
return new SignType2();
else
if(compare3.equals(third))
return new SignType3();
else
if(compare4.equals(fourth))
return new SignType4();
}
上面的代码检查并返回与传递的字符串对应的appropriet实例 希望这是你的关注