所以我有一个数据类,它有点布局为:
class MyData {
String str1,str2,str3;
Boolean bool1,bool2;
}
属性将根据字符串输入来填充,例如:
public void populate(String s) {
if(s.contains("somevalue") myData.setStr1("xxx");
if(s.constains("something else") myData.setBool1(true);
else myData.setBool1(false);
}
当然,这是一种非常可怕的做事方式,s.contains
实际上是一些非常多毛的情况,所以我定义了一个接口:
public interface DataFinderInterface {
public String findStringData(final String input);
public Boolean findBooleanData(final String input);
}
因此,populate 方法可以重写为:
public void populate(String s) {
myData.setStr1(str1Finder.findStringData(s));
myData.setBool1(bool1Finder.findBooleanData(s);
}
这个接口的实现要么定义了一个findStringData,要么定义了一个findBooleanData,这是很不令人满意的。populate 方法需要知道我们期望使用 findStringData 方法还是 findBooleanData 方法。
有一个更好的方法吗?我是否过于挑剔,因为填充方法需要知道 DataFinderInterface 的哪个实例无论如何分配给哪个字段?