Videotutorial: Patrones de diseño en PHP – Factory Pattern

Continuamos la serie de videos sobre patrones de diseño en PHP con el patrón creacional Factory, que consiste en un método para crear objetos cuando no sabemos la clase exacta del objeto que va a ser creado. De esta manera encapsulamos clases en una clase general de la que heredarán distintas subclases. Aunque el ejemplo utilizado es muy sencillo, este patrón es bastante interesante si tenemos en cuenta que podemos redefinir métodos en cada subclase, así como automatizar la creación de objetos utilizando variables (que podemos obtener de un fichero de settings).

Ver screencast (duración: 5:41)

Podéis ver el resto de screencasts en la página de videotutoriales, o suscribiros al podcast de iTunes.

Ejemplo de implementación

<?php
abstract class Vehiculo{
	protected $numruedas;
	public function getNumruedas(){
		return $this->numruedas;
	}
 
}
 
class Coche extends Vehiculo{
	protected $numruedas = 4;
}
 
class Bici extends Vehiculo{
	protected $numruedas = 2;
}
 
class VehiculoFactory{
	public static function crearVehiculo($tipo){
		$clasebase = 'Vehiculo';
		if(class_exists($tipo) && is_subclass_of($tipo, $clasebase))
			return new $tipo;
		else
			throw new Exception("No se reconoce el tipo de vehiculo $tipo");
 
	}
 
}
 
$vehiculo = Array('Bici', 'Coche');
 
foreach ($vehiculo as $v) {
	echo "El vehiculo $v tiene ".VehiculoFactory::crearVehiculo($v)->getNumruedas()." ruedas<br />";
}
?>
Si te ha gustado este artículo, por favor compártelo:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Meneame
  • StumbleUpon
  • Tumblr
  • Twitter

10 comentarios para “Videotutorial: Patrones de diseño en PHP – Factory Pattern”

  1. [...] This post was mentioned on Twitter by Cosme Fulanito. Cosme Fulanito said: Videotutorial: Patrones de diseño en PHP – Factory Pattern – http://bit.ly/aFKYfx [...]

  2. frank dice:

    me gusto el tutorial
    queria saber mas de los patrones de diseño y llegue a tu web.
    saludos

  3. [...] original here: Videotutorial: Patrones de diseño en PHP – Factory Pattern « David … Agregar a [...]

  4. Blanca dice:

    Que tipo de implementaciòn es esta David, podrias decirme cual de estas implementaciones es:
    1. Noob Implementation
    2. Static Factory with Reflection
    3. Self Registration without Reflection
    4. Self Registration with Reflection

    porfavor te lo agradecere infinitititivamente jajaja gracias.

  5. David Rojas dice:

    @Blanca El ejemplo que pongo es muy sencillo, para hacerse una idea de cómo funciona y sus ventajas, sin meterme en implementaciones concretas (que hay muchas, y dependen del lenguaje también). ‘Reflection’ se utiliza para crear dinámicamente una instancia de un tipo, y ’self registration’ se aplica cuando cada clase concreta (en este caso ‘coche’ y ‘bici’ que heredan de ‘vehiculo’) se identifica a sí misma, por lo tanto diría que la implementación sería ’self registration with reflection’.

  6. Blanca dice:

    muchisimas gracias David,
    he intentado suscribirme a tu blog y no he podido :(

  7. Blanca dice:

    una pregunta que editor de php utilizastes he intentado con phpdesigner, y winsyntax y no me funciona, :(

    este tema es bien complejo y bastante dificil de entender, me gusta leer mucho sobre lo que estudio. me gusta tu blog.

  8. David Rojas dice:

    @Blanca Utilizo textmate (es un editor para mac), no uso windows, aunque hay un clon parecido para windows que se llama e-texteditor. Aptana es muy completo y multiplataforma, aunque un poco pesado para mi gusto.
    Sobre suscribirte, ¿qué problema te da? En el lateral esta la dirección al feed de RSS, sólo tienes que añadirla a tu lector de RSS. También puedes suscribirte vía email, aunque lo he activado recientemente y por eso no he puesto ningún enlace, pero el link es este: http://feedburner.google.com/fb/a/mailverify?uri=DavidRojas&loc=es_ES

  9. Blanca dice:

    Listo! que Felicidad :)

  10. Blanca dice:

    OYE Te seguire de cerca en este tema!!! y en tanto aprenda te aportare

Deja un comentario

Introduce tu información personal en el formulario, regístrate o identifícate usando twitter con el siguiente botón.

RSS iTunes podcast Twitter

Categorías

Mi Amazon whislist: Regálame un libro!

Archivos