したがって、次のようにレイアウトされたデータクラスがあります。
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 メソッドのどちらを使用するかを知る必要があります。
これを行うより良い方法はありますか?populate メソッドは DataFinderInterface のどのインスタンスをどのフィールドに割り当てるかを知る必要があるため、私はうるさいですか?