Mam listę obiektów, które muszę posortować według pola, powiedzmy Wynik. Bez zastanawiania się napisałem nową klasę, która implementuje komparator, który wykonuje zadanie i działa.
Patrząc wstecz na to, zastanawiam się, czy zamiast tego powinienem mieć moją klasę implementującą Comparable, zamiast tworzyć nową klasę, która implementuje Comparator. Wynik jest jedynym polem, w którym obiekty zostaną uporządkowane.
Co zrobiłem do zaakceptowania jako praktyka?
Czy właściwe podejście jest „Najpierw niech klasa implementuje porównywalną (dla naturalnego porządku), a jeśli wymagane jest alternatywne porównanie pól, to utwórz nową klasę, która implementuje komparator”?
Jeśli (2) powyżej jest prawdziwe, to czy oznacza to, że należy wdrożyć komparator dopiero po tym, jak klasa implementuje Comparable? (Zakładając, że jestem właścicielem oryginalnej klasy).