Estoy tratando de aprender correctamente el uso del patrón factory puesto que antes lo estaba usando como una fábrica general de cualquier tipo de objetos
![Apenado](http://static.forosdelweb.com/fdwtheme/images/smilies/redface.png)
La cuestión es que después de leer por varios sitios y realizar un primer ejemplo continuo "sin comprenderlo".
Por ejemplo tengo lo siguiente:
Código PHP:
Ver original
interface IFactory { static public function create($name); } class DBFactory implements IFactory { static public function create($name) { switch (self::$database[$name]) { case 'PostgreSQL': return new PostgreSQL($name); default: echo 'Tipo de base de datos desconocida'; } } } abstract class DB { protected $_name = NULL; public function __construct($name) { $this->_name = $name; } public function getName() { return $this->_name; } } { } class PostgreSQL extends DB { } //Supongamos que el usuario elije la base de datos a la que conectarse desde un select option: $select_db = 'mysql'; //Nos trae la elección $objeto = DBFactory::create($select_db); echo $objeto->getName();
Entiendo que este ejemplo es el llamado "Simple Factory". ¿Estoy en lo correcto?
Ahora bien. mi duda... Factory Method y el Abstract Factory ¿qué diferencia tendrían con éste?.
Por ejemplo, la siguiente imagen explica el patrón Abstract Factory y sinceramente "no veo la diferencia" en cuanto al ejemplo que acabo de poner, sin embargo, mi ejemplo no es el patrón Abstract Factory.
![](http://www.clubdesarrolladores.com/res/userimages/2259/131-abstractfactory.jpg)
Saludos y gracias,
![Adios](http://static.forosdelweb.com/fdwtheme/images/smilies/adios.gif)