Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/05/2012, 12:56
Avatar de Ronin46
Ronin46
 
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 15 años, 4 meses
Puntos: 8
Pregunta Clase que admite crear varias instancias o sólo una (patrón Singleton)

Hola,

Estoy empezando a jugar con la programación orientada a objetos y me preguntaba que opina la gente sobre el siguiente código:

Código PHP:
<?php
abstract class Clase_Base
{
    protected 
$Variable;
    
    protected function 
__construct ()
    {
        echo 
'<p>Constructor Clase_Base</p>';
    }
    
    public function 
set_Variable ($Valor) { $this->Variable $Valor; }
    public function 
get_Variable () { echo '<p>Variable: ' $this->Variable '</p>'; }
}

abstract class 
Clase_Base_Singleton extends Clase_Base
{
    private static 
$Instancia;
    private static 
$NInstancias;
    
    protected function 
__construct ()
    {
        
self::$NInstancias 0;
        echo 
'<p>Constructor Clase_Base_Singleton</p>';
        
parent::__construct();
    }
    
    public static function 
singleton($Tabla)
    {
        if (!isset(
self::$Instancia))
        {
            echo 
'Singleton';
            
self::$Instancia = new $Tabla;
        }
        
self::$NInstancias++;
        return 
self::$Instancia;
    }
}

class 
Mi_Clase extends Clase_Base_Singleton
{
    public function 
__construct ()
    {
        echo 
'<p>Constructor Mi_Clase</p>';
        
parent::__construct();
    }
}

$Clase1 Mi_Clase::singleton('Mi_Clase');
$Clase1->set_Variable('variable singleton');
$Clase1->get_Variable(); // imprime "variable singleton"

$Clase2 Mi_Clase::singleton('Mi_Clase');
$Clase2->get_Variable(); // imprime "variable singleton"

$Clase3 = new Mi_Clase;
$Clase3->get_Variable(); // No imprime nada
$Clase3->set_Variable('variable');
$Clase3->get_Variable(); // Imprime "variable"

$Clase4 = new Mi_Clase;
$Clase4->get_Variable(); // No imprime nada

$Clase5 Mi_Clase::singleton('Mi_Clase');
$Clase5->get_Variable(); // imprime "variable singleton"
?>
¿Veis bien el hecho de que una clase permita la creación de varias instancias o una única (singleton) según se desee? ¿Qué problemas le veis?

Saludos.
__________________
http://www.controldegastos.com, acepto sugerencias para el sitio.
Repetir conmingo: "tengo que dedicar más tiempo a gozar de placer"

Última edición por Ronin46; 10/05/2012 a las 12:58 Razón: Cambio de título