Patrón Factory


Patrón Factory: Creando objetos de forma flexible

El patrón Factory es un patrón de diseño creacional que se utiliza para encapsular la lógica de creación de objetos. En lugar de instanciar objetos directamente, se delega esta tarea a una fábrica que decide qué objeto crear en función de ciertos parámetros.

¿Cómo funciona?

  1. Interfaz Producto: Define el contrato que deben cumplir todos los productos que puede crear la fábrica.
  2. Clase Fábrica: Es responsable de crear instancias de los productos concretos. Puede tener métodos para crear diferentes tipos de productos.
  3. Clases Producto Concretas: Implementan la interfaz Producto y representan los productos reales que se pueden crear.

Diagrama de clases:



Ejemplo en Java:

Java
interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Dibujando un círculo");
    }
}

class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Dibujando un rectángulo");
    }
}

class ShapeFactory {
    public Shape getShape(String shapeType) {
        if (shapeType == null) {
            return null;
        }
        if (shapeType.equalsIgnoreCase("CIRCLE")) {
            return new Circle();
        } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
            return new Rectangle();
        }
        return null;
    }
}

Relación con los Microkernels

En el contexto de los microkernels, el patrón Factory se utiliza para:

  • Crear instancias de servicios: Cuando un microkernel necesita un nuevo servicio (por ejemplo, un sistema de archivos, un controlador de red), puede utilizar una fábrica para crear una instancia del servicio adecuado.
  • Configurar servicios: La fábrica puede recibir parámetros de configuración para personalizar los servicios creados.
  • Ocultar la complejidad de la creación de objetos: La fábrica encapsula la lógica de creación de objetos, lo que simplifica el código del cliente.

Ejemplo en un microkernel:

Java
// FileSystemFactory
public class FileSystemFactory {
    public FileSystem createFileSystem(String type) {
        if (type.equals("ext4")) {
            return new Ext4FileSystem();
        } else if (type.equals("ntfs")) {
            return new NTFSFileSystem();
        }
        // ... otros tipos de sistemas de archivos
        return null;
    }
}

Beneficios de usar el patrón Factory en microkernels:

  • Flexibilidad: Se pueden agregar nuevos tipos de servicios sin modificar el código del microkernel.
  • Extensibilidad: Es fácil crear nuevas fábricas para tipos de servicios personalizados.
  • Configurabilidad: Los servicios se pueden configurar de forma dinámica.
  • Abstracción: Oculta la complejidad de la creación de objetos.

En resumen,

El patrón Factory es una herramienta valiosa para construir sistemas modulares y extensibles como los microkernels. Al delegar la creación de objetos a una fábrica, se logra una mayor flexibilidad, configurabilidad y mantenibilidad.


Comentarios

Entradas más populares de este blog

Layers of Abstraction Architectural Pattern

Antipatrones de diseño de software

Asynchronous Message Communication Pattern