Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22373

Re: parent::__contruct() prima o dopo

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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