Visualizzazione dei risultati da 1 a 6 su 6

Discussione: "Estendere" Singleton

  1. #1

    "Estendere" Singleton

    salve!
    la classe per la connessione al db l'ho scritta usando il pattern singleton.
    vorrei però trovare un modo per estenderla per non ritrovarmi con tutte le funzioni in quella.
    per com'è strutturata una classe singleton non può essere estesa da quanto ho capito, come si ovviare?

  2. #2
    Non si tratto di "ovviare", ma di buona progettazione.
    Se hai utilizzato un singleton evidentemente era quello di cui avevi la necessità.
    Se ora hai la necessità di estenderlo evidentemente il singleton non è stata la scelta corretta a suo tempo.
    Per cui piuttosto che "ovviare" al problema ti consiglio di riprogettare o perlomeno ripensare il tutto.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    ehm...

    ...


    ....


    scusa eh, ma che c'entra Singleton con le funzionalità della classe? Si vede che la tua classe fà troppe cose. E' la progettazione della classe mancante probabilmente
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    allora, mi sono ritrovato a lavorare su un progetto non mio che usa una classe per gestire tutto il database ed usa singleton.
    il db ha diverse tabelle e dentro questa classe ci stanno tutte le funzioni per le tabelle.
    ad esempio:
    -addArticolo()
    -getArticoli()
    -getArticolo($articolo)
    -getCategorie()
    -addCategoria()
    -getPrezzi()
    -getPrezziListino()
    -................

    senza fare a meno di meno di singleton volevo "alleggerire" questa classe, e crearne diverse per le varie tabelle.
    ma usando sempre la stessa istanza di connessione.

  5. #5
    Esempio:

    Codice PHP:

    class DbConn{

    //codice per gestire il singleton
    ....
    public function 
    connect(){ ...}
    public function 
    execQuery($query){....}
    public function 
    isConnected(){ .... }
    ......
    }

    class 
    Articolo{

    private 
    $dbConn;

    public function 
    __construct(DbConn $dbConn){ $this->dbConn $dbConn }

    public function 
    addArticolo($dati){

    if(
    $this->dbConn->isConnected())
          
    $this->dbConn->execQuery("insert into articolo dati = $dati");

    }

    ..
    ...

    }


    $articolo = new Articolo(DbConn::getInstance());

    ... 
    qualcosa del genere?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    ah okok capito.
    in effetti non ci avevo pensato.
    grazie per il consiglio!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.