9
Czy możesz wyjaśnić, dlaczego twórcy guawy wolą definiować konstruktory jako prywatne i definiować metody statyczne, aby tworzyć obiekty?guava: dlaczego metody create() zamiast konstruktora?
Czy możesz wyjaśnić, dlaczego twórcy guawy wolą definiować konstruktory jako prywatne i definiować metody statyczne, aby tworzyć obiekty?guava: dlaczego metody create() zamiast konstruktora?
Efektywna pozycja Java 1: Rozważ statyczne metody fabryczne zamiast konstruktorów.
Niektóre z zalet statycznych metod fabrycznych należą:
Zawartość książki jest również dostępna w Internecie (http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1). – david
Dodałbym przewagę, którą uważam za najważniejszą z punktu widzenia użytkownika końcowego: mają jaśniejszą nazwę. 'newHashMapWithCapacity (100)' jest dużo jaśniejsze niż 'nowy HashMap (100)'. –
@JBNizet: Udostępniamy te metody dla implementacji kolekcji JDK, ale dla naszych rodzimych kolekcji zazwyczaj nie mamy bardziej szczegółowych nazw niż "create". (Nie jestem pewien, czy to była właściwa rozmowa, z dokładnie tego powodu, którą opisujesz.) –