Leggevo su questa pagina su quando per controllare i parametri durante la costruzione di un oggetto. La risposta accettata suggerisce di lanciare l'eccezione dal costruttore in modo che un oggetto non valido non possa essere costruito.
Sono d'accordo con questo approccio e non riesco a vedere come si possa costruire un Person
senza name
.
Tuttavia, uno dei commenti suggerito:
I also agree that second option is better because it is more reusable than the first one. The first option is violating Object Oriented Principles. Even the factory method is better designed than that.
Domande:
-
Esattamente quali principi OOP vengono violati quando si genera un'eccezione nel costruttore? È la linea guida che un costruttore non dovrebbe fare il lavoro?
-
L'altro approccio suggerito dall'OP era un
PersonService
, tuttavia questa è solo una speculazione, ma con questo approccio speri che il codice client chiameràpublic void addPerson(Person personToAdd)
per verificare che l'oggetto persona non lo faccia t contenere un nullo? Cosa succede se trovano un modo per aggirare quell'assegno? Oppure prima dipublic void addPerson(Person personToAdd)
usano quell'oggetto in un'altra classe non scritta da loro che si aspetta un oggettoPerson
valido?
Ancora una volta, tutto questo fa parte della speculazione, ma sembra che tu stia mettendo molta responsabilità sul client per garantire che l'oggetto Person
sia valido quando avrebbe dovuto essere fatto al momento della sua creazione.