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)
- Descargar videotutorial en alta calidad – MOV (9 MB)
- Descargar videotutorial optimizado para iPod/iPhone – M4V (6 MB)
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 />"; } ?>



[...] 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 [...]
me gusto el tutorial
queria saber mas de los patrones de diseño y llegue a tu web.
saludos
[...] original here: Videotutorial: Patrones de diseño en PHP – Factory Pattern « David … Agregar a [...]
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.
@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’.
muchisimas gracias David,
he intentado suscribirme a tu blog y no he podido
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.
@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
Listo! que Felicidad
OYE Te seguire de cerca en este tema!!! y en tanto aprenda te aportare