Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #22373
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Newsgroups | it.comp.www.php |
| Subject | Re: parent::__contruct() prima o dopo |
| Date | 2018-11-26 16:20 +0000 |
| Message-ID | <g62kr8F1mpcU1@mid.individual.net> (permalink) |
| References | (8 earlier) <ptgla2$1sd8$1@gioia.aioe.org> <g624nhFsmd0U1@mid.individual.net> <ptgndd$mh$1@gioia.aioe.org> <g62h5bFssoU1@mid.individual.net> <pth5q3$ro7$1@gioia.aioe.org> |
On 26/11/2018 16:03, Flavix wrote:
> Il 26/11/2018 16:18, Alessandro Pellizzari ha scritto:
>> Che, tra parentesi, trasformi in decoratore cambiando solo la prima riga
>>
>> class VerboseSender implements Sender {
>> ...
>> }
>
> Scusate se mi intrometto, ma allora quello di alex cos'era?x
Vedi la discussione di qualche mese fa riguardo decoratori, wrapper,
proxy, ecc. ecc.
Diversi nomi con minime differenze, ma il succo è lo stesso: wrappare un
oggetto per fargli fare altre cose non previste senza dover modificare
il codice originale.
Tecnicamente entrambi sono decoratori (mantengono la stessa interfaccia
pubblica). Avere una classe astratta in mezzo non serve a niente.
>> In programmazione funzionale puoi fare currying del decoratore (in
>> pratica generare dinamicamente un decoratore prima di applicarlo
>> all'oggetto/funziona wrappata), ma in OOP devi passare roba al
>> costruttore (o avere un DecoratorFactory... more Java! :P)
>
> E qual'è il problema?
Sovraingegnerizzazione, che in questo caso, oltre a essere inutile, è
anche dannosa (per le prestazioni e la flessibilità, oltre che per la
pulizia del codice)
In Java viene parzialmente attenuato il problema, perché c'è una fase di
compilazione, in cui l'optimizer potrebbe anche accorgersi che non usi
mai alcuni percorsi della Factory, o che la classe astratta è
piccolissima, e potrebbe decidere di mettere il codice inline,
cancellando di fattola factory o l'abstract.
In PHP non c'è questa fase (anche perché PHP compila in millisecondi,
mentre Java a volte impiega minuti), quindi ti becchi il problema a runtime.
Bye.
Back to it.comp.www.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
parent::__contruct() prima o dopo alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-23 08:51 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-24 09:07 +0000
Re: parent::__contruct() prima o dopo alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-24 14:39 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-24 13:51 +0000
Re: parent::__contruct() prima o dopo alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-24 16:04 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-25 11:12 +0000
Re: parent::__contruct() prima o dopo alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-26 11:26 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-26 10:31 +0000
Re: parent::__contruct() prima o dopo alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-26 12:26 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-26 11:45 +0000
Re: parent::__contruct() prima o dopo alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-11-26 13:02 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-26 15:18 +0000
Re: parent::__contruct() prima o dopo Flavix <imeil@a.a> - 2018-11-26 17:03 +0100
Re: parent::__contruct() prima o dopo Alessandro Pellizzari <shuriken@amiran.it> - 2018-11-26 16:20 +0000
Re: parent::__contruct() prima o dopo off line <mail@inva.it> - 2018-11-27 08:25 +0100
csiph-web