Pequeña charla sobre patrones de diseño (2): patrón de fábrica simple
- Introducción a la columna
- Patrón de fábrica simple
-
- Composición de patrón de fábrica simple.
- Idea principal
- Implementación de código Java
-
- Primero, definimos una interfaz de producto abstracta Producto, que contiene un método abstracto uso():
- Luego, creamos dos clases de productos concretas, ProductoA y ProductoB, que implementan la interfaz abstracta del producto Producto:
- A continuación, creamos una clase de fábrica simple SimpleFactory, que contiene un método estático createProduct (tipo de cadena) para crear el objeto de producto correspondiente de acuerdo con el tipo de parámetro pasado:
- Finalmente, podemos usar el patrón de fábrica simple en el código del cliente para crear objetos de producto concretos:
- análisis de código
- Análisis de ventajas y desventajas
- Resumir
Introducción a la columna
Dirección de columna
Introducción a la columna
Principalmente analiza y resume uno por uno los 23 patrones de diseño comunes actualmente en el mercado, espero que los amigos interesados puedan echarle un vistazo y se actualizará continuamente. Espero que puedan supervisarme y podamos aprender y progresar juntos, vamos todos.
Patrón de fábrica simple
El patrón de fábrica simple es un patrón de diseño de creación que proporciona la mejor manera de crear objetos. Al encapsular la lógica de creación del objeto en una clase de fábrica, el cliente no necesita conocer los detalles de creación específicos, solo solicite el objeto requerido de la clase de fábrica.
Composición de patrón de fábrica simple.
En el patrón de fábrica simple, hay tres roles principales involucrados: productos abstractos, productos concretos y fábricas simples.
Producto abstracto
El producto abstracto es la interfaz común de clases de productos específicas, que define los métodos comunes del producto. Un producto abstracto puede ser una interfaz o una clase abstracta, y la implementación específica la completa la clase de producto específica.
Producto de hormigón
Un producto concreto es una clase de implementación de un producto abstracto, que implementa los métodos definidos en el producto abstracto. En el patrón de fábrica simple, cada producto específico corresponde a una categoría de producto específica.
Fábrica sencilla
Una fábrica simple es una clase que contiene métodos estáticos que crean objetos de producto. Crea el objeto de producto específico correspondiente de acuerdo con la solicitud del cliente y lo devuelve al cliente para su uso. Una fábrica simple oculta los detalles de la creación de objetos. El cliente solo necesita obtener los objetos requeridos a través de la clase de fábrica sin crear una instancia directa de la clase de producto específica.
La relación entre los tres
1. Los productos abstractos estandarizan el comportamiento de productos específicos definiendo la interfaz común del producto.
2. El producto específico es la clase de implementación del producto abstracto y es responsable de implementar los métodos definidos en el producto abstracto.
3. Como clase de fábrica, la fábrica simple encapsula el proceso de creación de objetos. Crea el objeto de producto específico correspondiente de acuerdo con la solicitud del cliente y lo devuelve al cliente para su uso.
Idea principal
Encapsule el proceso de creación de objetos en una clase de fábrica, y el cliente solo necesita obtener el objeto requerido a través del método estático de la clase de fábrica sin crear una instancia directa de la clase de producto específica. Esto puede reducir el acoplamiento entre el cliente y categorías de productos específicas, y facilitar la expansión y el mantenimiento de tipos de productos.
Implementación de código Java
Primero, definimos una interfaz de producto abstracta Producto, que contiene un método abstracto uso():
public interface Product {
void use();
}
Luego, creamos dos clases de productos concretas, ProductoA y ProductoB, que implementan la interfaz abstracta del producto Producto:
public class ProductA implements Product {
@Override
public void use() {
System.out.println("Product A is being used.");
}
}
public class ProductB implements Product {
@Override
public void use() {
System.out.println("Product B is being used.");
}
}
A continuación, creamos una clase de fábrica simple SimpleFactory, que contiene un método estático createProduct (tipo de cadena) para crear el objeto de producto correspondiente de acuerdo con el tipo de parámetro pasado:
public class SimpleFactory {
public static Product createProduct(String type) {
if (type.equals("A")) {
return new ProductA();
} else if (type.equals("B")) {
return new ProductB();
}
return null;
}
}
Finalmente, podemos usar el patrón de fábrica simple en el código del cliente para crear objetos de producto concretos:
//客户端
public class Client {
public static void main(String[] args) {
Product productA = SimpleFactory.createProduct("A");
productA.use(); // Output: Product A is being used.
Product productB = SimpleFactory.createProduct("B");
productB.use(); // Output: Product B is being used.
}
}
análisis de código
El cliente crea un objeto de producto específico llamando al método SimpleFactory.createProduct() sin crear una instancia directa de la clase de producto específica. De esta forma, se reduce el acoplamiento entre el cliente y productos específicos, y también se facilita la ampliación y mantenimiento de tipos de productos.
La clase de fábrica simple SimpleFactory contiene un método estático createProduct (tipo cadena), que crea el objeto de producto correspondiente de acuerdo con el tipo de parámetro pasado. En aplicaciones reales, se puede utilizar una lógica más compleja para crear objetos basados en necesidades específicas, como leer archivos de configuración o bases de datos para determinar qué producto específico crear.
En el código del cliente, creamos el objeto de producto específico llamando al método SimpleFactory.createProduct(). El cliente sólo necesita conocer el tipo de producto y no necesita preocuparse por los detalles específicos de creación. Esto puede reducir el acoplamiento entre el cliente y categorías de productos específicas, y facilitar la expansión y el mantenimiento de tipos de productos.
Análisis de ventajas y desventajas
ventaja
Encapsula el proceso de creación de objetos.
El patrón de fábrica simple encapsula el proceso de creación de objetos en una clase de fábrica: el cliente solo necesita conocer el tipo de producto y no necesita preocuparse por los detalles específicos de la creación. Esto puede reducir la complejidad del cliente y facilitar la expansión y el mantenimiento de los tipos de productos.
Reduce el acoplamiento entre el cliente y categorías de productos específicas.
El cliente solo necesita obtener los objetos requeridos a través de la clase de fábrica sin crear una instancia directa de la clase de producto específica. Esto puede reducir la dependencia entre el cliente y clases de productos específicas, haciendo que el código del cliente sea más flexible y fácil de mantener.
Facilita la expansión y el mantenimiento de tipos de productos.
En el patrón de fábrica simple, si necesita agregar un nuevo tipo de producto, solo necesita modificar el código de la clase de fábrica. Esto facilita agregar nuevos tipos de productos sin modificar el código del cliente. Al mismo tiempo, también facilita el mantenimiento de tipos de productos y gestiona de forma centralizada el proceso de creación de objetos.
defecto
Viola el principio de apertura y cierre.
En el patrón de fábrica simple, al agregar un nuevo tipo de producto, es necesario modificar el código de la clase de fábrica. Esto viola el principio de abierto y cerrado y modificar el código existente puede introducir nuevos riesgos. Por lo tanto, si el tipo de producto cambia con frecuencia, el patrón simple de fábrica no es adecuado.
Las responsabilidades de la fábrica son demasiado pesadas
En el patrón de fábrica simple, la clase de fábrica es responsable de crear todos los objetos del producto. A medida que aumentan los tipos de productos, el código de la clase de fábrica se volverá cada vez más complejo y tendrá responsabilidades sobrecargadas. Esto viola el principio de responsabilidad única y no favorece el mantenimiento y la expansión del código.
Resumir
El patrón de fábrica simple es un patrón de diseño de creación simple y de uso común, adecuado para escenarios donde hay menos objetos y relativamente simples para crear. Encapsula el proceso de creación de objetos, reduce la complejidad del cliente y facilita la expansión y el mantenimiento de los tipos de productos. Sin embargo, el modelo de fábrica simple viola el principio de apertura y cierre y no es adecuado para situaciones en las que los tipos de productos cambian con frecuencia. Además, las responsabilidades sobrecargadas de la clase fábrica son también una de sus deficiencias. Por lo tanto, en aplicaciones prácticas, es necesario elegir el modo de creación apropiado según la situación específica.