所以我有一個有點奠定了作爲一個數據類:接口提取一個布爾值或字符串
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,這是相當不令人滿意的實現。填充方法需要知道我們是否期望使用findStringData方法或findBooleanData方法。
有沒有更好的方法來做到這一點?我是過於挑剔,因爲填充方法需要知道什麼樣的DataFinderInterface實例分配到哪個字段呢?
我不知道這是否只有我,但你的問題不是很清楚。這看起來像[XY問題](http://meta.stackexchange.com/q/66377/196975)。可能你應該先解釋你的問題陳述。你想要做什麼,然後你現在擁有什麼。 –
填充也需要能夠設置'str2','str3'和'bool2'? –