Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #22462
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Newsgroups | it.comp.www.php |
| Subject | Re: Iniezione delle dipendenze vs Service Locator |
| Date | 2018-12-22 16:12 +0000 |
| Message-ID | <g87642F4t7rU1@mid.individual.net> (permalink) |
| References | (8 earlier) <pvgm1e$a1$1@gioia.aioe.org> <g83qs7Fd3mkU1@mid.individual.net> <pviqtv$1fsr$1@gioia.aioe.org> <1efb5a5c-b682-4cf1-8cac-4000315504dc@googlegroups.com> <pvl56e$1mu0$1@gioia.aioe.org> |
On 22/12/2018 10:55, alex wrote: > Il 22/12/18 00:45, fmassei@gmail.com ha scritto: >> Un factory costruisce un oggetto al volo e lo ritorna, solitamente è giusto >> un wrapper per un costruttore. > > O restituisce una specifica versione di un oggetto che però implementa > sempre la stessa interfaccia (come ha illustrato Alessandro)? Per definizione, un oggetto implementa sempre la stessa interfaccia. Non esistono "versioni di un oggetto". Una factory restituisce oggetti di classi diverse, che implementano la stessa interfaccia. Se una factory torna sempre lo stesso oggetto della stessa classe, che implementa la stessa interfaccia, puoi eliminare la factory e l'interfaccia, che non servono a niente, e ti rimane solo la classe col suo costruttore. >> Un builder restituisce un oggetto non costruibile in un singolo step, e.g. >> quando solo il costruttore non da un oggetto utilizzabile. > > Ad esempio? Ad esempio $controller = ControllerBuilder::create() ->withRequest($req) ->withOutput(new HtmlRenderer()) ->withDb($contentDb) ->build(); Il controller non può funzionare senza una Request, senza una connessione al DB e senza sapere dove mandare l'output. Se, per qualsiasi motivo, non hai tutte le informazioni disponibili quando lo crei, puoi creare un builder e passarlo alle varie fasi della pipeline, che aggiungono i pezzi che mancano, e alla fine chiami `build()` che costruisce il Controller vero e proprio, da usare nel Router. Se chiami `build` senza aver settato tutte le parti richieste, torna un errore e non ti restituisce il controller. Se non chiami `build` alla fine, hai un ControllerBuilder e non un Controller, quindi non hai l'interfaccia adatta al Router. È praticamente Dependency Injection fatta a passi successivi, invece che passare tutto nel costruttore dell'oggetto. Sono tecniche che si usano spesso in linguaggi strictly typed, e in PHP perdono un po' di senso, ma sono comunque utili per catturare errori in certe circostanze. Bye.
Back to it.comp.www.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-16 12:52 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-16 17:28 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-17 08:50 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-17 10:51 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-18 14:36 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-20 12:42 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 14:49 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-20 17:39 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 19:06 +0100
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 19:28 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-21 09:42 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-21 14:47 +0100
Re: Iniezione delle dipendenze vs Service Locator fmassei@gmail.com - 2018-12-21 15:45 -0800
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 11:55 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-22 16:12 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 17:33 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-22 16:46 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 18:37 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-23 15:18 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-23 18:43 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-23 17:52 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-23 18:58 +0100
Re: Iniezione delle dipendenze vs Service Locator fmassei@gmail.com - 2018-12-24 04:22 -0800
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-30 14:38 +0100
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 13:04 +0100
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 16:18 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-20 17:37 +0000
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 19:21 +0100
Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 20:19 +0100
Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-21 09:45 +0000
Re: Iniezione delle dipendenze vs Service Locator fmassei@gmail.com - 2018-12-16 18:46 -0800
csiph-web