@miecooo, często jest tak, że chciałbyś aby jakaś biblioteka była dołączana warunkowo. Tworzysz tylko fabrykę, która korzysta z interfejsów, a implementację niech dostarczy ktoś inny. Stworzono zatem taki mechanizm w oparciu o pliki jar. Generalnie idea jest taka, że masz interfejs i następnie w pliku jar w META-INF/services umieszczasz plik o nazwie takiej jak interfejs (z nazwą pakietu) i treści składającej się z jednej linii - nazwy klasy implementującej.
Później używasz klasy fabrykującej ServiceLoader, która wyszuka odpowiednie zależności i stworzy listę implementacji podanego interfejsu na podstawie zapisów z services.