Un metodo Start()
(come Run()
, Execute()
o qualcosa di simile) è appropriato quando il costo della costruzione dell'oggetto è basso, ma il costo di usando è alto. Ad esempio: una classe che incapsula un algoritmo di ottimizzazione del percorso migliore. È banale impostarlo con un set di parametri ( X
quadrati di Y
quadrati, con il metodo di valutazione di suchandsuch), ma potrebbe richiedere del tempo per essere eseguito. Se vuoi creare 20 di questi oggetti, potresti voler ritardare l'esecuzione fino a quando non sono stati creati tutti - questo ti permette di parallelizzarli più facilmente, per esempio.
In alternativa, potrebbe essere utile quando non sai quando l'oggetto sarà necessario per iniziare, forse perché si basa sull'input dell'utente, o sulla logica che seleziona da un elenco di possibilità.
Ciò presuppone, ovviamente, che Start()
sia il metodo utile sull'oggetto e non equivalente a un metodo Initialize()
. Se è solo un modo extra per impostare più parametri, non dovrebbe esistere.