Spring: cuándo usar el patrón de diseño de fábrica en lugar de la inyección de dependencia

Requisito previo: patrón de fábrica frente a inyección de dependencia

El patrón de diseño de fábrica y el diseño de inyección de dependencia se utilizan para definir los programas controlados por interfaz para crear objetos. La inyección de dependencia se utiliza para obtener un diseño débilmente acoplado , mientras que Factory Pattern agrega acoplamiento entre objetos, fábricas y dependencias. En este artículo, discutiremos cuándo usar Factory Pattern en lugar de Inyección de dependencia.

En Inyección de dependencia, se usa para componentes de software acoplados libremente. No tiene conocimiento de ningún contenedor o fábrica para la creación de bean y solo tiene conocimiento de la dependencia, lo que hace que la clase sea más fácil de probar. El contenedor (IOC contiene en caso de primavera) administra la creación de objetos y su vida útil y también inyecta dependencias a la clase.

Ejemplo :

Java

public class FactoryProduct{
        
    // Instance of OperatingSystem
    private OperatingSystem OS;  
        
    public void setAddress(Address address){  
        this.address=address;  
    }  
}

En Factory Design, crea varias instancias de una clase sin saber necesariamente qué tipo de objeto crea o cómo crearlo. El cliente es responsable de administrar la clase de fábrica y de llamar al método getInstance() para crear una instancia de la clase. Esto también dificulta la prueba unitaria, ya que necesitaría un objeto de fábrica para realizar la prueba unitaria.

Ejemplo:

Java

// Dependent class
public class FactoryProduct{
  
    public static void Main(String[] str){
        // Instance of OperatingSystemFactory class
        OperatingSystemFactory osfactory = new OperatingSystemFactory();
        // Getting the instance    
        OperatingSystem obj = osfactory.getInstance("windows");
        obj.cpu();
    }
}

Cuándo usar Factory Design

El diseño de patrón de fábrica se utiliza principalmente en las siguientes situaciones:

  • Una clase no conoce el tipo de objeto antes de su creación.
  • Una clase requiere que sus subclases especifiquen los objetos que crea.
  • Desea localizar la lógica de su programa para instanciar una instancia de la clase.
  • Es útil cuando necesita abstraer la creación de un objeto de su implementación real. 

Publicación traducida automáticamente

Artículo escrito por ashutosh44 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *