![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| ||||
| ||||
|
|
A proposito di questi cavolo di Singleton in JS seguendo le direttive dei pattern GoF, sono arrivato ad una conclusione, *non è possibile farlo alla lettera in JS*! |
|
Tuttavia con piccolissimi riadattamenti al linguaggio sono riuscito a partorire questo: |

|
E a meno che non abbia detto l'ennesima castroneria, |
|
Vai Zer0 dimmi di tutto :P |
#3
| |||||||||||
| |||||||||||
|
|
A proposito di questi cavolo di Singleton in JS seguendo le direttive dei pattern GoF, sono arrivato ad una conclusione, *non è possibile farlo alla lettera in JS*! E' possibilissimo, a meno che tu non confonda i pattern con la loro implementazione. |
|
Un pattern è una metodologia, un approccio, una via da seguire. Non un'implementazione pratica. |
|
Tuttavia con piccolissimi riadattamenti al linguaggio sono riuscito a partorire questo: Mi sa che a te le closure ti hanno un po' rovinato. ![]() |

|
E a meno che non abbia detto l'ennesima castroneria, Non ho controllato il codice, ma non condivido l'approccio. |

|
Però, è una cosa personale: |
|
se si adatta alle tue specifiche esigenze, e ti risulta comoda, ben venga. |
|
Vai Zer0 dimmi di tutto :P Quel che ti dovevo dire circa il Sigleton te l'ho già detto diverse volte. Per quanto riguarda lo specifico codice, come ho detto, temo che le closure ti abbiano un po' rovinato. Mi sa che sei caduto nel Golden Hammer, che è un anti pattern. |

|
E l'approccio non mi convince perché a mio avviso sei andato a snaturare un po' troppo JS. Non hai creato una funzione costruttrice "SingletonClass" bensì una funzione anonima da associare a una variabile "SingletonClass"; |
|
non hai sfruttato il prototype a dovere e hai creato diverse closure, e senza reale necessità (mi riferisco ad esempio al this.f). |
|
Inoltre, è poco generalizzato (il getInstance, ad esempio). |
|
Hope it helps. |


#4
| ||||||||||||||
| ||||||||||||||
|
|
Un pattern è una metodologia, un approccio, una via da seguire. Non un'implementazione pratica. ok, giusto |
Mi sa che a te le closure ti hanno un po' rovinato. ![]() Mi piacciono tantissimo ![]() |
Lo dico per te. Mi sembra di non|
se si adatta alle tue specifiche esigenze, e ti risulta comoda, ben venga. a dire il vero a me sembrerebbe più comodo avere un oggetto literal globale e riferirmi direttamente a quello senza chiamare una metodo... |
|
però per certi aspetti assomiglia ad una variabile globale |
|
e quindi mi ero "intrippato" in questa cosa di creare un singleton seguendo l'implementazione tradizionale del pattern definito da GoF |
|
(di cui non sono ancora riuscito a leggere il libro) |
|
e cioè creare un metodo statico che desse la restituzione dell'unica istanza e che impedisse un'instanziazione diretta, e con questa implementazione mi sembra di essermi avvicinato parecchio. |

|
Per quanto riguarda l'uso della chiusura per l'istanza, mi è sembrato l'unico modo per farla accedere dal costruttore e dal metodo statico evitanto altri tipi di accessi (altrimenti avrei potuto fare una proprietà statica pubblica) |
|
Quel che ti dovevo dire circa il Sigleton te l'ho già detto diverse volte. Per quanto riguarda lo specifico codice, come ho detto, temo che le closure ti abbiano un po' rovinato. Mi sa che sei caduto nel Golden Hammer, che è un anti pattern. ![]() |

|
E l'approccio non mi convince perché a mio avviso sei andato a snaturare un po' troppo JS. Non hai creato una funzione costruttrice "SingletonClass" bensì una funzione anonima da associare a una variabile "SingletonClass"; e già mi è servito per creare la chiusura instance |
|
non hai sfruttato il prototype a dovere e hai creato diverse closure, e senza reale necessità (mi riferisco ad esempio al this.f). vabbe' quello era esemplificativo mi era più comodo e sintetico scrivere così che: SingletonClass.prototype.f = function() { alert( this.$ ); } |

|
Inoltre, è poco generalizzato (il getInstance, ad esempio). nel senso che non riuscirei..., mmm, no non ho capito |

|
Hope it helps. la colpa della fissa che mi è venuta di fare un "bel" singleton l'attribuisco a te, |

|
tu sei la causa di tutto e hai creato un mostro che inizia ad adottare una programmazione un po' più OOP |
![]() |
| Thread Tools | |
| Display Modes | |
| |