public interface Processor<T> {
public void process(T object);
}
I wtedy metoda pomocnika:
public static <T> void processAll(Collection<T> items, Collection<? extends Processor<T>> processors) {
Iterator<T> i = items.iterator();
Iterator<? extends Processor<T>> p = processors.iterator();
while(i.hasNext() && p.hasNext())
p.next().process(i.next());
}
Można umieścić tę metodę pomocnika na klasy, która go używa, jeśli istnieje tylko jeden (i uczynić go private
), lub umieścić go narzędzia klasa dzielona przez cały program.
Oczywiście istnieją inne sposoby kodowania processAll
; na przykład można użyć pętli for
w jednej z kolekcji. Ale w każdym razie, złamanie tego kodu niskiego poziomu w metodę pomocnika spowoduje, że twój kod wyższego poziomu będzie czystszy i mniej "hałaśliwy". A jeśli robisz coś podobnego w wielu częściach programu, mogą udostępniać metodę pomocnika.
robi pomocy interfejsu Iterable? – Wint
Nie. To tylko obiekt niestandardowy. Jak by to mogło pomóc? Mam na myśli, czy powinien być jeden? – Jim
Sprawdź tę odpowiedź: http://stackoverflow.com/a/8104205/1029272 Łatwy do wdrożenia i działa na leczeniu. Dostałem go i uruchomiłem w ciągu ostatnich 5 minut, żeby go wypróbować. – Deco