• RisoltoModeratore Guido Scialfa

    (@wido)


    Ciao a tutti,

    Ho un dubbio riguardo l’implementazione del singleton in una circostanza particolare.

    Il dubbio riguarda quando la mia classe eredita da un’altra e non ho la necessità di dover fare in modo che vengano create altre istanze di questa mia sottoclasse.

    Ora il metodo costruttore della classe parente è dichiarato come protected ed ovviamente non posso effettuare l’overwrite della tipologia di accesso quindi devo necessariamente dichiarare anche il mio costruttore come protected.

    La mia classe inoltre non prevede di essere estesa quindi l’ho dichiarata come final ed ho comunque implementato il metodo get_instance per la creazione e restituzione dell’instanza della classe.

    Mi chiedevo a conti fatti produco lo stesso risultato che ad usare il pattern singleton tradizionale?

Stai visualizzando 2 risposte - dal 1 al 2 (di 2 totali)
  • Moderatore Cristiano Zanca

    (@cristianozanca)

    Ciao Guido,

    pur non capendo bene l’obiettivo della tua domanda, posso darti questo link dove trovi un articolo che trovo interessante

    https://carlalexander.ca/singletons-in-wordpress/

    Moderatore Guido Scialfa

    (@wido)

    Ciao @cristianozanca,

    Grazie per il link, il singleton lo conosco, il mio dubbio era su un’implementazione leggermente diversa. Per intenderci:

    
    abstract class Classe_Abstract {
    
        protected function __construct() {
            // ...code...
        }
    } 
    
    final class Classe extends Classe_Abstract {
    
        protected function __construct() {
            // ...code...
        }
    
        public static function get_instance() {
            
            static $_instance = null;
        
            if ( null === $_instance ) {
                $_instance = new self;
            }
    
            return $_instance;
        }
    } 
    

    La questione è che non posso modificare il tipo di accesso per il costruttore della classe Classe perchè deve essere necessariamente lo stesso tipo di accesso di quella parente. Ne consegue che l’unico modo per evitare che il singleton perda la sua efficacia e quello di dichiarare la classe di tipo final in modo che non possa essere ereditata e quindi non vi sia modo di poter chiamare il costruttore.

    Mi chiedevo quindi se alla fin fine il risultato è comunque lo stesso o stessi dimenticando qualcosa.

Stai visualizzando 2 risposte - dal 1 al 2 (di 2 totali)
  • Il topic ‘Singleton’ è chiuso a nuove risposte.