patron method granito entre ejercicios ejemplos ejemplo diseño diferencia codigo design-patterns factory factory-pattern abstract-factory

design-patterns - method - patron de diseño abstract factory c#



Fábrica, fábrica abstracta y método de fábrica (3)

Estoy realmente confundido acerca de estos tres términos.

Mi entendimiento es que:

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

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

¿Está bien?

¿Cuáles son las otras diferencias?

Además, ¿cuál es el patrón de método de fábrica? ¿Es lo mismo que el patrón de fábrica?


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

El método de fábrica difiere la creación de objetos para las subclases. Esto significa que se define una clase / interfaz base, sin embargo, el código del cliente no crea un objeto contra esta interfaz. Las sub clases que implementan la interfaz se dejan para inicializar un objeto.

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

Ya hay buena información en ese sitio. La siguiente mejor cosa es verificar 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


La pandilla de cuatro "Patrones de diseño; Elementos del software reutilizable orientado a objetos" contiene dos entradas, "Abstract Factory" (también conocido como "Virtual Constructor") y "Factory Method" ... No sé de "Concrete Factory". Escuché el término, pero nunca lo pensé demasiado.

Método de fábrica

En "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 objetos HtmlElement :

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 el document para definir otra clase que define otro createElement este sería el material principal del Método de fábrica.

Fábrica abstracta

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

El típico ejemplo directo del libro es una Widget Factory; En el día en que se publicó el GoF, el desarrollo de la GUI multiplataforma era un poco complicado, por lo que se podía definir una clase de fábrica de artilugios abstractos.

Esa clase podría tener los 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ía una instancia de la clase diferente.

Adición - Fábrica de hormigón

Creo que una fábrica de concreto es una implementación no abstracta de Abstract Factory o Factory.

Entonces, cuando escribo mi propia generalización de document que anula a createElement , la clase que creo es una fábrica de concreto.

Del mismo modo, mientras WidgetFactory sería una fábrica abstracta, SwingWidgetFactory sería una fábrica de concreto.


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

Entonces puede decir que la fábrica abstracta contiene más de una fábrica