Podczas modelowania klas, co jest preferowanym sposobem inicjowania:Konstruktorzy vs Metod fabrycznych
- Konstruktorzy lub
- Fabryka Formy
i jakie byłyby rozważania dotyczące korzystania z któregokolwiek z nich ?
W niektórych sytuacjach wolę mieć metodę fabryczną, która zwraca wartość null, jeśli obiekt nie może zostać skonstruowany. To sprawia, że kod jest zgrabny. Mogę po prostu sprawdzić, czy zwrócona wartość nie jest pusta przed podjęciem alternatywnej akcji, w przeciwieństwie do wypisania wyjątku od konstruktora. (Osobiście nie lubię wyjątków)
Powiedzmy, mam konstruktora na klasie, która oczekuje wartości id. Konstruktor używa tej wartości do zapełnienia klasy z bazy danych. W przypadku, gdy rekord z podanym identyfikatorem nie istnieje, konstruktor generuje wyjątek RecordNotFoundException. W takim przypadku będę musiał zamknąć konstrukcję wszystkich takich klas w bloku try..catch.
W przeciwieństwie do tego mogę mieć statyczną metodę fabryczną dla tych klas, która zwróci wartość null, jeśli rekord nie zostanie znaleziony.
Które podejście jest lepsze w tym przypadku, metodą konstruktora lub fabryki?
Statyczna metoda fabryczna różni się od wzoru projektu GoF - Factory Method Pattern. http://stackoverflow.com/questions/929021/what-are-static-factory-methods-in-java –
Proszę nie porównywać z wzorcem metody Factory wzorców projektowych GoF. –
to mi nic nie wyjaśnia – Sushant