patrones patron method granito explicacion ejemplo diseño arquitectura design design-patterns factory-pattern

design - patron - Ejemplos del mundo real de patrón de método de fábrica



patron factory method explicacion (6)

Acabo de leer el método de fábrica. Entiendo que proporciona una manera de delegar la creación de instancias a las subclases. Pero no pude entender los posibles usos en un escenario del mundo real.

¿Alguien puede dar un ejemplo típico que muestre cómo se puede usar el patrón del método Factory para que pueda relacionarme con lo que he leído?

Una declaración de problemas para la cual el patrón de método de fábrica es la mejor solución sería suficiente para aclararlo.


Desde API estoy desarrollando ahora mismo:

WebGalleryFactory factory = WebGalleryFactory.newInstance (WebGalleryType.PICASA); WebAlbum album = factory.createAlbum (title, description);

En este ejemplo, utilizo Factory Method para crear Abstract Factory de cierto tipo (PICASA en el ejemplo).

Estos dos patrones se utilizan a menudo juntos.


Simple Factory Design Pattern no pertenece a las Gangs of Four. Un patrón de fábrica simple es uno de los que devuelve una instancia de una de varias clases posibles, según los datos que se le proporcionen. Esto implica que las clases que devuelve tienen la misma clase y métodos principales, pero cada una de ellas realiza tareas de manera diferente para diferentes tipos de datos. Aquí está la publicación completa con el ejemplo del mundo real.


Un ejemplo de código php:

interface DbTable { public function create($array); } class MySqlTable implements DbTable { public function create($array) { // add a record to a table on mysql database } } class OracleTable implements DbTable { public function create($array) { // add a record to a table on oracle database } } class TableFactory { private $dbTypeConfig = ''mysql''; public function createTable() { if ($this->dbTypeConfig == ''mysql'') { return new MySqlTable(); } elseif ($this->dbTypeConfig == ''oracle'') { return new OracleTable(); } return null; } }


Un ejemplo de la Biblioteca de clases base (BCL) .NET es Control.CreateControlsInstance , que es usado por muchos otros miembros de la clase de control (Formularios de Windows).

Puede anular este método protegido para proporcionar su propia colección de controles, por ejemplo, cuando está implementando un control personalizado.


Una clase que implementa un patrón de diseño de fábrica funciona como puente entre varias clases. Considere un ejemplo del uso de múltiples servidores de bases de datos como SQL Server y Oracle. Si está desarrollando una aplicación utilizando la base de datos SQL Server como backend, pero en el futuro deberá cambiar la base de datos backend a oracle, deberá modificar todo su código, si no ha escrito su código siguiendo el patrón de diseño de fábrica.

En el patrón de diseño de fábrica necesita hacer muy poco trabajo para lograrlo. Una clase que implementa un patrón de diseño de fábrica cuida de usted y disminuye su carga. Cambiar de servidor de base de datos no te molestará en absoluto. Solo necesita hacer algunos pequeños cambios en su archivo de configuración.


Zend_Db lo usa en su clase Zend_Db_Adapter para permitir la creación de diferentes tipos de objetos de base de datos basados ​​en la configuración de la base de datos que se pasa desde un objeto de configuración.