:O ¡que rapidez!
Veamos, me he leído el post que mencionas y me ha quedado claro el tema del
Simple Factory y el
Factroy Method. De hecho, ahora veo claramente que
el ejemplo que puse, es un Simple Factory porque estoy creando diferentes objetos que sé que tienen una relación en concreto con esa fabrica, en este caso la fabrica
DBFactory.
Cita: Factory Method, se usa para separar diferentes Fabricas de Objetos que estan dentro de un mismo componente común, por ejemplo, un objeto que crea formularios, puede tener un fabrica que cree formularios desde un XML, o desde un array, o desde una BDD...
Entiendo por esto que puedo crear un objeto que sea una fabrica de usuarios y que a su vez esta fabrica, cree usuarios desde un XML, BD... ¿no?
He realizado un ejemplo para ver si he entendido el Factory Method, aunque tengo el presagio que esta mal
Código PHP:
Ver original<?php
interface IFactory
{
static public function createUserXML($name);
static public function createUserBD($name);
}
class UserFactory implements IFactory
{
static public function createUserXML($name)
{
return new UserXML($name);
}
static public function createUserBD($name)
{
return new UserBD($name);
}
}
abstract class User
{
protected $_name = NULL;
public function __construct($name)
{
$this->_name = $name;
}
public function getName()
{
return $this->_name;
}
}
class UserXML extends User
{
}
class UserBD extends User
{
}
$objeto = UserFactory::createUserXML('UserXML');
echo $objeto->getName();
Por otro lado, el patrón Abstract Factory sigo sin cogerlo del todo. El diagrama lo entiendo pero ya esta, no veo claro cuando usarlo y cuando no ya que creo que con un simple factory es suficiente... En fin, sinceramente tengo un lio ahora mismo que no me aclaro ni yo
Saludos y gracias