Efektywne czytanie Javy, wydaje się, że istnieje wiele zalet i bardzo niewiele wad, aby użyć statycznych metod fabrycznych. Statycznych metod fabrycznych I specjalnie oznaczać następująceCzy zawsze powinienem używać statycznych metod fabrycznych zamiast konstruktorów?
public class MyClass {
private MyClass() { ... };
public static MyClass getInstance() {
return new A();
}
}
ze skutecznej Java:
pamiętać, że metoda statyczna fabryki nie jest taki sam, jak wzorzec Factory Method z Design Patterns [Gamma95, s. 107]. Statyczna metoda fabryczna opisana w tym punkcie nie ma bezpośredniego odpowiednika w Wzorcach projektu.
Czy najlepiej jest zawsze stosować się do tej praktyki, czy tylko czasami?
Jeśli tak, kiedy?
Czy kiedykolwiek jest to przesadą?
To przesada, gdy jest przesada. Tylko ty możesz to osądzić. Generalnie, ostrzegłbym cię, byś nie ślepo podążał za * każdą * otrzymaną mądrością. Zazwyczaj odkrywa się, że wszystkie pierwotne kwalifikacje, z którymi chroniono pierwotne oświadczenie, zostają zapomniane, a jedynie zasada pozostaje, często nikt tak naprawdę nie wie, dlaczego. – EJP
W tym przypadku mamy szczęście, ponieważ oryginalny tekst jest zachowywany w całej okazałości w Efektywnej Jawie, pozycja 1. Nie jestem jednak pewien, czy moja interpretacja jest prawidłowa. – cendrillon
Powiedziałbym, że jest to generalnie przesada, chyba że masz konkretny powód, dla którego chcesz ukryć tworzony typ, który jest w zasadzie wtedy, gdy chcesz użyć wzoru fabrycznego. Sugeruję, że w większości przypadków tak nie jest. Zastanów się, jakie będzie życie, na przykład, jeśli nie możesz zbudować łańcucha lub nici. – EJP