O patrón Singleton (instancia única)
PHP Maio 11th, 2009Os patróns de programación son técnicas ben coñecidas e probadas para resolver determinados problemas de programación.
Un dos patróns é o Patrón Singletón que serve para acceder a recursos (ficheiros, conexións a base de datos) onde so se pode crear unha única instancia dese acceso (so unha conexión a BD, …). Para evitar que se creen varios accesos a dito recurso empregase as técnicas índicadas neste patrón..
As técnicas que recolle este patrón para resolver dito problema son:
A súa implementación en PHP5 é a seguinte:
class PatronSingleton
{
// Contenedor Instancia da Clase
private static $instancia;
// O constructor non é accesible
private function __construct()
{
echo 'Son o constructor';
}
// O metodo accesible
public static function singleton()
{
if (!isset(self::$instancia)) {
$c = __CLASS__;
self::$instancia = new $c;
}
return self::$instancia;
}
}
$obxeto1 = PatronSingleton::singleton();
$obxeto2 = PatronSingleton::singleton();
Por exemplo, para realizar a conexión a un servidor de BD MySQL empregando este patrón de diseño:
class accesoDB
{
// Contenedor Instancia da Clase
private static $instancia;
private $id_conexion;
// O constructor non é accesible
private function __construct()
{
$this->id_conexion = mysql_connect("localhost","usuario","contrasinal");
}
// O metodo accesible
public static function getAcceso()
{
if (!isset(self::$instancia)) {
$c = __CLASS__;
self::$instancia = new $c;
}
return self::$instancia;
}
public function getIdConexion() {
return $this->id_conexion;
}
}
$obxeto1 = accesoDB::getAcceso();
var_dump($obxeto1->getIdConexion());
$obxeto2 = accesoDB::getAcceso();
var_dump($obxeto2->getIdConexion());
Como se pode ver, devolvese sempre o mesmo identificador de recurso de conexión a BD, independentemente das veces que se emprege.
Leave a Reply
You must be logged in to post a comment.