Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #20447 > unrolled thread
| Started by | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| First post | 2016-03-05 09:55 +0100 |
| Last post | 2016-03-05 06:15 -0800 |
| Articles | 13 — 4 participants |
Back to article view | Back to it.comp.www.php
wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-05 09:55 +0100
Re: wrapper o decoratore Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-03-05 13:41 +0100
Re: wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-05 14:17 +0100
Re: wrapper o decoratore Alessandro Pellizzari <shuriken@amiran.it> - 2016-03-05 13:30 +0000
Re: wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-05 14:56 +0100
Re: wrapper o decoratore Alessandro Pellizzari <shuriken@amiran.it> - 2016-03-05 14:18 +0000
Re: wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-05 15:44 +0100
Re: wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-05 15:58 +0100
Re: wrapper o decoratore Alessandro Pellizzari <shuriken@amiran.it> - 2016-03-05 15:20 +0000
Re: wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-05 16:42 +0100
Re: wrapper o decoratore Alessandro Pellizzari <shuriken@amiran.it> - 2016-03-07 10:20 +0000
Re: wrapper o decoratore alex <1j9448a02@lnx159sneakemail.com.invalid> - 2016-03-07 17:35 +0100
Re: wrapper o decoratore fmassei@gmail.com - 2016-03-05 06:15 -0800
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-05 09:55 +0100 |
| Subject | wrapper o decoratore |
| Message-ID | <nbe6uj$ggc$1@gioia.aioe.org> |
Differenza? Un wrapper secondo me non modifica il wrapped (il valore in esso contenuto), ma al massimo esegue dei controlli per controllarne la validità, ed in caso contrario genera delle apposite eccezioni. Poi invece un decoratore è anch'esso un wrapper, che però può modicare il wrapped aggiungendo delle decorazioni, ad es.: $wrapped = '<b>'.$wrapped.'</b>'; parent::__construct($wrapped); Cosa ne pensate delle definizioni che ho esposto?
[toc] | [next] | [standalone]
| From | Andrea D'Amore <anddam+NOSPAM@brapi.net> |
|---|---|
| Date | 2016-03-05 13:41 +0100 |
| Message-ID | <nbek63$di9$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #20447 |
On 2016-03-05 08:55:57 +0000, alex said: > Cosa ne pensate delle definizioni che ho esposto? Stai compilando il Novissimo Melzi dell'Informatica? -- Andrea
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-05 14:17 +0100 |
| Message-ID | <nbem8i$19mq$1@gioia.aioe.org> |
| In reply to | #20448 |
Il 05/03/2016 13:41, Andrea D'Amore ha scritto: > On 2016-03-05 08:55:57 +0000, alex said: > >> Cosa ne pensate delle definizioni che ho esposto? > > Stai compilando il Novissimo Melzi dell'Informatica? > Affermazione di carattere forse un po' troppo enfatizzante :) Con tutto il rispetto per Giovanni Battista, direi che forse non sono l'unico a pormi la domanda http://forums.codeguru.com/showthread.php?411166-wrapper-vs-decorator
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-03-05 13:30 +0000 |
| Message-ID | <dk05bpFu5kcU1@mid.individual.net> |
| In reply to | #20449 |
Il Sat, 05 Mar 2016 14:17:09 +0100, alex ha scritto: > Con tutto il rispetto per Giovanni Battista, direi che forse non sono > l'unico a pormi la domanda > http://forums.codeguru.com/showthread.php?411166-wrapper-vs-decorator Pare che nessuno sia d'accordo sulla definizione di decorator, wrapper e adapter. Forse dipende dal linguaggio o dal background di chi ne parla. Per quanto mi riguarda, un decorator è un wrapper che non modifica l'interfaccia dell'oggetto wrappato, mentre un adapter è un wrapper che implementa un'interfaccia diversa per l'oggetto wrappato. Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-05 14:56 +0100 |
| Message-ID | <nbeohh$1d6j$1@gioia.aioe.org> |
| In reply to | #20450 |
Il 05/03/2016 14:30, Alessandro Pellizzari ha scritto: > Per quanto mi riguarda, un decorator è un wrapper che non modifica > l'interfaccia dell'oggetto wrappato, Quindi se ad es. esegue solo dei controlli del tipo if (is_null($wrapped)) throw new ... senza decorare niente di niente, è comunque da considerare un decoratore (che non decora)?
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-03-05 14:18 +0000 |
| Message-ID | <dk084rFu5kcU2@mid.individual.net> |
| In reply to | #20451 |
Il Sat, 05 Mar 2016 14:56:08 +0100, alex ha scritto: > Quindi se ad es. esegue solo dei controlli del tipo if > (is_null($wrapped)) throw new ... Un decoratore non dovrebbe mai wrappare null (così come un adapter), quindi questo tipo di controllo non ha senso. Se intendevi altri controlli, fai un esempio. Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-05 15:44 +0100 |
| Message-ID | <nberba$1ho2$1@gioia.aioe.org> |
| In reply to | #20453 |
Il 05/03/2016 15:18, Alessandro Pellizzari ha scritto:
> Il Sat, 05 Mar 2016 14:56:08 +0100, alex ha scritto:
>
>> Quindi se ad es. esegue solo dei controlli del tipo if
>> (is_null($wrapped)) throw new ...
>
> Un decoratore non dovrebbe mai wrappare null (così come un adapter),
> quindi questo tipo di controllo non ha senso.
>
> Se intendevi altri controlli, fai un esempio.
>
> Bye.
>
class ValidString {
function __construct($wrapped) {
if (is_null($wrapped)) throw new ...;
$this->wrapped = $wrapped;
}
}
E' stata applicata qualche decorazione, quindi ha senso parlare di
decoratore?
Oppure è stato fatto ***soltanto*** un checking?
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-05 15:58 +0100 |
| Message-ID | <nbes5g$1j83$1@gioia.aioe.org> |
| In reply to | #20454 |
Il 05/03/2016 15:44, alex ha scritto:
>
> class ValidString {
> function __construct($wrapped) {
> if (is_null($wrapped)) throw new ...;
> $this->wrapped = $wrapped;
> }
> }
>
> E' stata applicata qualche decorazione, quindi ha senso parlare di
> decoratore?
> Oppure è stato fatto ***soltanto*** un checking?
Anche se in effetti...
è stata applicata una decorazione funzionale (alla classe), pur
lasciando immutato il contenuto (wrapped).
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-03-05 15:20 +0000 |
| Message-ID | <dk0bqoFu5kcU3@mid.individual.net> |
| In reply to | #20454 |
Il Sat, 05 Mar 2016 15:44:02 +0100, alex ha scritto:
> class ValidString {
> function __construct($wrapped) {
function __construct(BaseString $wrapped) {
In questo modo non puoi passare null (ti dà errore in fase di compilazione
del file) e forzi il tipo base (che è quello che deve fare un decoratore).
Se passi il tipo sbagliato, ti dà errore in fase di esecuzione.
Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-05 16:42 +0100 |
| Message-ID | <nbeuoe$1nfk$1@gioia.aioe.org> |
| In reply to | #20456 |
Il 05/03/2016 16:20, Alessandro Pellizzari ha scritto:
> Il Sat, 05 Mar 2016 15:44:02 +0100, alex ha scritto:
>
>> class ValidString {
>> function __construct($wrapped) {
>
> function __construct(BaseString $wrapped) {
>
> In questo modo non puoi passare null (ti dà errore in fase di compilazione
> del file) e forzi il tipo base (che è quello che deve fare un decoratore).
>
> Se passi il tipo sbagliato, ti dà errore in fase di esecuzione.
>
> Bye.
>
Ovvio.
Quindi alla fine possiamo dire che **wrapper** è un appellativo
piuttosto generico, che può indicare un decorator o un adapter?
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-03-07 10:20 +0000 |
| Message-ID | <dk52ujF7nh5U2@mid.individual.net> |
| In reply to | #20457 |
On 05/03/2016 15:42, alex wrote: > Quindi alla fine possiamo dire che **wrapper** è un appellativo > piuttosto generico, che può indicare un decorator o un adapter? E anche altre cose, volendo, tipo Proxy e forse anche Facade. Bye.
[toc] | [prev] | [next] | [standalone]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2016-03-07 17:35 +0100 |
| Message-ID | <nbkajv$1l4a$1@gioia.aioe.org> |
| In reply to | #20462 |
Il 07/03/2016 11:20, Alessandro Pellizzari ha scritto: > On 05/03/2016 15:42, alex wrote: > >> Quindi alla fine possiamo dire che **wrapper** è un appellativo >> piuttosto generico, che può indicare un decorator o un adapter? > > E anche altre cose, volendo, tipo Proxy e forse anche Facade. > > Bye. > Facade, cioè ad esempio un Helper?
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2016-03-05 06:15 -0800 |
| Message-ID | <a4bfb1f2-01a0-426a-94f2-54a4c4f7a5ef@googlegroups.com> |
| In reply to | #20447 |
On Saturday, March 5, 2016 at 3:55:50 AM UTC-5, alex wrote: > Differenza? > Un wrapper secondo me non modifica il wrapped (il valore in esso > contenuto), ma al massimo esegue dei controlli per controllarne la > validità, ed in caso contrario genera delle apposite eccezioni. > Poi invece un decoratore è anch'esso un wrapper, che però può modicare > il wrapped aggiungendo delle decorazioni, ad es.: > > $wrapped = '<b>'.$wrapped.'</b>'; > parent::__construct($wrapped); > > Cosa ne pensate delle definizioni che ho esposto? > Non direi... Spesso la confusione nasce dal fatto che sia il decorator pattern che lo adapter pattern sono chiamati a volte "wrapper pattern", per motivi a me ignoti. Oltre a quello che ha già scritto Alessandro, aggiungerei che dipende anche dal concetto che deve esprimere, lo dicono i nomi stessi: wrapper: impacchetta una classe o libreria attorno a un layer extra. Lo puoi fare per qualsiasi motivo, tipo isolare componenti o librerie, o solo perché non ti piacciono i nomi di funzioni o metodi :) decorator: aggiunge funzionalità ad un componente. Lo usi per estendere una classe a runtime senza modificare la classe stessa. adapter: permette di usare un interfaccia al posto di un'altra. Lo usi per far lavorare insieme più classi che non erano state disegnate per farlo, senza modificarle. Ciao!
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web