2012-12-09 21 views
5

W Efektywnej Java, pozycja 1, mówi, że statyczne metody fabryczne spowodowały, że struktura kolekcji była znacznie mniejsza niż byłaby. Czy ktoś mógłby wyjaśnić, w jaki sposób? Nie rozumiem, jak to jest możliwe tylko z powodu użycia statycznych metod fabrycznych? Mam na myśli, że musimy jeszcze wdrożyć te oddzielne wdrożenia, prawda?Statyczne metody fabryczne w efektywnej java

Zbiorów Framework API jest znacznie mniejszy niż byłoby gdyby eksportowane trzydzieści dwa oddzielne klasy publicznych, po jednym dla każdej implementacji wygody.

+0

"dużo mniejszy" masz na myśli - wydajność, prawda? –

+1

Nie. Myślę, że w Effective java, mają na myśli rozmiar. Proszę popraw mnie jeżeli się mylę. –

Odpowiedz

2

Przez „mniejszy” oznaczają one „mniej klas”.

Zamiast dostarczać wiele klas dla każdej odmiany implementacji, zamiast tego zapewniono metody fabryczne, które zwracają takie implementacje bez potrzeby zadeklarowania ich klas jako klas najwyższego poziomu (bez "nadużywania klasy").

+0

Czy możesz wyjaśnić wady posiadania zbyt wielu klas na najwyższym poziomie? Nie jestem pewien, czy rozumiem tę część odpowiedzi. – Viraj

+0

@viraj zbyt wiele zajęć jest formą "bałaganu w kodzie", zwłaszcza gdy konkretne klasy, które będą potrzebne, są efektywnymi smakami kilku interfejsów. Metody fabryczne zapewniają również stabilne API, za którym można zmieniać rzeczywiste klasy, gdy zmienia się podstawa kodu. – Bohemian

+0

Popraw mnie, jeśli nie zrozumiałem tego dobrze, ukrywanie rzeczywistych implementacji (przez uczynienie klas niepublicznymi) za interfejsami w metodach fabrycznych pomaga w przypadkach, gdy chcesz zmienić implementacje w miarę ewolucji podstawy kodu. Oznacza to, powiedzmy, że masz dwie implementacje dla konkretnego interfejsu w wersji 1.1, możesz po prostu usunąć 1 implementację 2 w wersji 1.2? – Viraj