次のインターフェースがあります。
public interface Endpoint {
void reply(HttpExchange exchange, Map<String, String> parameters, boolean prettyPrint);
}
public interface Nameable {
String getName();
}
public interface Patternable { // I seriously suck at naming, you could also suggest a name for this one
String getPattern();
}
エンドポイントを格納するためのリストを提供するマネージャ クラスと、そのリストからエンドポイントを取得するためのメソッドがあります。それが私がこれまでにメソッドのために行ったことです:
public Endpoint getEndpoint(String nameORpattern) {
return endpointList.stream().filter(endpoint -> {
if (endpoint instanceof Nameable) {
return ((Nameable) endpoint).getName().equalsIgnoreCase(nameORpattern);
} else if (endpoint instanceof Patternable) {
return Pattern.compile(((Patternable) endpoint).getPattern()).matcher(nameORpattern).find();
} else {
return false;
}
}).findFirst().orElse(null);
}
しかし、私たちは皆、これがどこに向かっているのかを知っています。スパゲッティ コードです...そこで、私の質問は次のとおりです。そのエンドポイントを見つけて返す最良の方法は何ですか?