Qual'è la differenza tra factory e singleton? (ho trovato quel codice sulla pagina che avrebbe dovuto spiegare la singletonOriginariamente inviato da andreamk
Non proprio.
Una classe singleton e' una classe che ti impedisce in alcun modo di averne due istanze.
La tua classe MySql puo essere istanziata diverse volte con new ; pero utilizando la classe singleton che e' una mezza factory la crei una sola volta.)
Se faccio così però la classe 'singleton' non può più instanziare oggetti MySQL.... c'è un modo per rendere il costruttore privato ma lasciarlo disponibile alla classe singleton?Per fare una classe singleton per prima cosa devi rendere privato il costruttore della classe stessa.
Ma devo quindi modificare la classe 'singleton' o la classe 'MySQL'? Non mi è chiaro....Cosi che se fai new ClasseSingleton lo script ti da errore e poi definire una getIstance all'interno della classe che ti restituisca l'istanza.
Ma se invece lo istanzio tramiteCosi facendo l'unico modo per avere un istanza di MySql e' fare MySql::getInstance() e sei sicuro che sia sempre una e una sola istanza in tutto lo script.Codice PHP:class MySql {
var $host;
var $user;
var $pass;
var $data;
var $link;
private static istanzaMySql = null;
private function __construct() {
}
public static function getInstance() {
if (is_null(MySql::$istanzaMySql)) {
MySql::$istanzaMySql = new MySql();
}
return MySql::$istanzaMySql;
}
...
.
}
Andrea
?Codice PHP:singleton::getInstance('MySQL');
Cosa cambia? Perchè l'articolo non sembra fare differenza!

)
Rispondi quotando