Ver Mensaje Individual
  #33 (permalink)  
Antiguo 16/01/2005, 14:21
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Patrones

Patrones
Los patrones son maneras de describir las mejores prácticas y los buenos diseños. Muestran una solución flexible a los problemas de programación comunes.
Patterns are ways to describe best practices and good designs. They show a flexible solution to common programming problems.

Factory
El patrón "factory" permite la instanciación de objetos en tiempo de ejecución. Se llama patrón "factory" (fábrica) ya que es responsable de la "fabricación" un objeto.
The Factory pattern allows for the instantation of objects at runtime. It is called a Factory Pattern since it is responsible for "manufacturing" an object.

Ejemplo 19-23. Factory Method
Código PHP:
<?php
class Example
{
   
// El método "factory"
   
function &factory($type)
   {
       if (include_once 
'Drivers/' $type '.php') {
           
$classname 'Driver_' $type;
           return new 
$classname;
       } else {
           throw new 
Exception ('Driver no encontrado');
       }
   }
}
?>
Definir este método en una clase permite que los drivers sean cargados sobre la marcha. Si la clase Ejemplo era una clase de la abstracción de la base de datos, podríamos cargar un driver de MySQL o SQLite como sigue:
Defining this method in a class allows drivers to be loaded on the fly. If the Example class was a database abstraction class, loading a MySQL and SQLite driver could be done as follows:
Código PHP:
<?php
// Carga de un driver MySQL
$mysql Ejemplo::factory('MySQL');

// Carga de un driver SQLite
$sqlite Ejemplo::factory('SQLite');
?>
Singleton
El patrón Singleton se aplica a las situaciones en las cuales se necesita que haya una única instancia de una clase. El ejemplo más común de esto es una conexión a la base de datos. Implementar este patrón permite que un programador haga que esta única instancia sea fácilmente accesible por muchos otros objetos.
The Singleton pattern applies to situations in which there needs to be a single instance of a class. The most common example of this is a database connection. Implementing this pattern allows a programmer to make this single instance easily accessible by many other objects.
Example 19-24. Función Singleton
Código PHP:
<?php
class Ejemplo
{
   
// contiene una instancia de la clase
   
static private $instancia;
  
   
// Un constructor privado
   
private function __construct()
   {
       echo 
'Estoy construida';
   }

   
// El método singleton
   
static public function singleton()
   {
       if (!isset(
self::$instancia)) {
           
$c __CLASS__;
           
self::$instancia = new $c;
       }

       return 
self::$instancia;
   }
  
   
// Método de ejemplo
   
public function bark()
   {
       echo 
'Woof!';
   }
}

?>
Esto permite una sola instancia de la clase Ejemplo que será devuelta.
This allows a single instance of the Example class to be retrieved.
Código PHP:
<?php
// Esto fallaría porque el constructor es privado
$test = new Ejemplo;

// Esto siempre devolverá la única instancia de Ejemplo
$test Ejemplo::singleton();
$test->bark();

?>