Pregunta

Estoy realmente confundido acerca de estos tres términos.

Mi entendimiento es que:

  • en el patrón Fábrica, no hay ninguna fábrica concreta.La fábrica construye los nuevos objetos según los parámetros.

  • En el patrón Abstract Factory, hay varias fábricas concretas.El cliente tiene que crear explícitamente diferentes fábricas de hormigón.

¿Está bien?

¿Cuáles son las otras diferencias?

Además, ¿qué es el patrón Factory Method?¿Es igual que el patrón Factory?

¿Fue útil?

Solución

La Banda De Los Cuatro "Patrones De Diseño;El libro "Elementos de software orientado a objetos reutilizables" contiene dos entradas, "Abstract Factory" (también conocido como 'Virtual Constructor') y "Factory Method"...No sé sobre "Fábrica concreta". He escuchado el término pero nunca pensé demasiado.

Método de fábrica

En el "Método de fábrica", un objeto tiene un método que es responsable de la creación de instancias de otro objeto.Un ejemplo común sería el objeto de documento JavaScript y la creación de HtmlElement objetos:

var newDiv = document.createElement('div');

Sin embargo, este no es un gran ejemplo, ya que una parte importante del método Factory es el polimorfismo.Si pudiera extender document para definir otra clase que define otra createElement este sería el material principal del Método de Fábrica.

Fábrica abstracta

Una fábrica abstracta pretende "proporcionar una interfaz para crear familias de objetos relacionados o dependientes sin especificar clases concretas.

El típico ejemplo sacado del libro es una fábrica de widgets;En la época en que se publicó GoF, el desarrollo de GUI multiplataforma era un poco complicado, por lo que se podía definir una clase de fábrica de widgets abstracta.

Esa clase podría tener métodos. createWindow, createButton, createScrollBar etc.A su vez, se definirían varias implementaciones para producir widgets Swing o AWT o lo que sea.Luego, dependiendo de la configuración, se creará una instancia de la clase diferente.

Anexo - Fábrica de Concreto

Creo que Concrete Factory es cualquier implementación no abstracta de Abstract Factory o método Factory.

Entonces, cuando escribo mi propia generalización de document que anula createElement, la clase que creo es Concrete Factory.

Asimismo, mientras WidgetFactory sería una Fábrica Abstracta, SwingWidgetFactory Sería una fábrica de hormigón.

Otros consejos

La mejor manera de aprender es definitivamente para leer. Echar un vistazo a esto: http://www.dofactory.com/Patterns/Patterns.aspx .

creación de aplazar método de fábrica de objetos a clases sub. Esto significa que una clase / interfaz base se define obstante código de cliente no crea un objeto contra esta interfaz. sub clases que implementan la interfaz se dejan para inicializar un objeto.

fábricas abstractas se pueden encontrar aquí: http://www.dofactory.com/ patrones / PatternAbstract.aspx # _self2

Ya existe una buena información sobre ese sitio. La segunda mejor opción es comprobar wiki:

http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29

http://javadesign-patterns.blogspot.com/ es un buen lugar para aprender patrones de diseño

FÁBRICA PATRÓN: devuelve objetos de una misma familia
RESUMEN DE FÁBRICA:. Devuelve objetos de más de una familia

Por lo que puede decir Abstract Factory contiene más de una fábrica

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top