El patrón de fábrica de patrones de diseño

¡Acostúmbrate a escribir juntos! Este es el día 17 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .

Introducción

El patrón de fábrica es el patrón más comúnmente utilizado para crear instancias de objetos.Es un patrón que reemplaza la nueva operación con un método de fábrica. El famoso foro Jive usa muchos patrones de fábrica, que se pueden ver en todas partes en el sistema de programación de Java. Debido a que el patrón de fábrica es equivalente a crear nuevos objetos de instancia, a menudo necesitamos generar objetos de instancia de acuerdo con la clase Class, como A a=new A() El patrón de fábrica también se usa para crear objetos de instancia, por lo que necesitaremos más atención cuando sea nuevo en el futuro Si puede considerar usar el patrón de fábrica, aunque hacerlo puede hacer más trabajo, traerá una mayor escalabilidad a su sistema y minimizará la cantidad de modificaciones.

Masaaki

Pregunta de reflexión ¿Cómo se puede abstraer de la aplicación el código que crea instancias de clases concretas, o encapsularlo para que no interfiera con otras partes de la aplicación? P111

  • Coloque el código para instanciar una clase específica en un objeto para su administración y decida instanciar una clase específica a través de diferentes parámetros de entrada.

Simple Factory
no es uno de los 23 patrones de diseño GOF, sino más bien un lenguaje de programación. P117

imagen.png

Características

  • Las instancias generalmente se crean utilizando métodos estáticos, pero no hay forma de cambiar el comportamiento del método creado a través de la herencia. P115

defecto

  • En violación del principio abierto-cerrado, la clase de fábrica debe modificarse al agregar productos.

Patrón de método de fábrica

Se define una interfaz para crear objetos, pero depende de la subclase decidir qué clase instanciar. P134

imagen.png

Características

  • Los métodos de fábrica permiten que las clases difieran la creación de instancias a las subclases. P134
  • "Decisión" se refiere a qué subclase elegir, lo que determina qué subclase se crea realmente. P134
  • Agregar un producto o cambiar la implementación de un producto no afecta la interfaz de fábrica. P135

defecto

  • Cuando se agregan nuevos productos, es necesario agregar nuevas fábricas, lo que aumenta la complejidad del código.

El patrón de fábrica abstracto
proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar explícitamente una clase concreta. P156

imagen.png

Características

  • Los métodos de una fábrica abstracta a menudo se implementan como métodos de fábrica. P158
  • Una colección de productos relacionados. P159

defecto

  • Cuando se agrega un nuevo producto relacionado, la interfaz y la clase de implementación deben modificarse. P159

Criterios de diseño

  • Principio de inversión de dependencia : depende de la abstracción, no de las clases concretas. P139

Los componentes de alto nivel no pueden depender de los componentes de bajo nivel, y tanto los componentes de alto nivel como los de bajo nivel deben depender de abstracciones. P139
Los componentes de bajo nivel dependen de abstracciones de alto nivel. P141
Directrices para evitar violar el Principio de Inversión de Dependencia (puede intentar seguirlo de acuerdo con la situación real) P143
Las variables no pueden contener referencias a clases concretas:
es decir, si no importa clases concretas, puede usar fábricas para evitar referencias a clases concretas.
No haga clases derivadas de clases concretas:
[Explicación en el libro] Puede depender de clases concretas cuando las use, pero deje que las clases se deriven de interfaces o clases abstractas.
[Mis propios pensamientos] Siempre que el las clases concretas se derivan de interfaces o clases abstractas, las clases se pueden derivar de las clases concretas
sin anular la clase base.Métodos implementados:
[Explicación en el libro] Los métodos implementados en la clase base deben ser compartidos por todas las subclases.
[Mi propios pensamientos] También se mencionó anteriormente en el libro que la clase base puede proporcionar métodos predeterminados, y las subclases pueden anularlos como propios.

qué piensas

  • De hecho, cuando suelo escribir código, a menudo invierto mi forma de pensar. Por ejemplo, cuando confío en diferentes implementaciones de una interfaz para completar diferentes funciones pequeñas, no escribiré primero la implementación específica, sino que completaré el código de nivel superior. marco según la interfaz. , y luego complete cada clase de implementación en detalle.
  • Aunque el libro habla sobre la diferencia entre el método de fábrica y la fábrica abstracta, sigo sintiendo que la diferencia entre los dos no es grande, pero es un poco diferente en los escenarios de aplicación. El método de fábrica se refiere a la creación de una clase de productos, mientras que la clave de fábrica abstracta está relacionada con múltiples clases de productos. Una fábrica abstracta es un método de fábrica cuando solo hay una clase de productos relacionados.

Supongo que te gusta

Origin juejin.im/post/7087872450439938061
Recomendado
Clasificación