0

したがって、次のようにレイアウトされたデータクラスがあります。

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 のどのインスタンスをどのフィールドに割り当てるかを知る必要があるため、私はうるさいですか?

4

4 に答える 4