Creative Saplings

GeeksforGeeks (Español)

septiembre 29, 2020
No Comments

Es un patrón de diseño de creación que habla de la creación de un objeto. El patrón de diseño de fábrica dice que defina una interfaz (una interfaz java o una clase abstracta) y deje que las subclases decidan qué objeto instanciar. El método de fábrica en la interfaz permite que una clase difiera la instanciación a una o más subclases concretas. Dado que estos patrones de diseño se refieren a la creación de instancias de un objeto, se incluye en la categoría de patrón de diseño de creación. Si notamos el nombre método Factory, eso significa que hay un método que es una fábrica, y en general las fábricas están involucradas con cosas de creación y aquí con esto se está creando un objeto. Es una de las mejores formas de crear un objeto donde la lógica de creación de objetos está oculta al cliente. Ahora veamos la implementación.

Implementación:
1. Defina un método de fábrica dentro de una interfaz.
2. Deje que la subclase implemente el método de fábrica anterior y decida qué objeto crear.
En Java, los constructores no son polimórficos, pero al permitir que la subclase cree un objeto, estamos agregando un comportamiento polimórfico a la instanciación. En resumen, estamos tratando de lograr un pseudo polimorfismo dejando que la subclase decida qué crear, por lo que este método Factory también se llama como

Constructor virtual. Intentemos implementarlo con un problema en tiempo real y algún ejercicio de codificación.

Declaración del problema:
Considere que queremos implementar un servicio de notificación por correo electrónico, SMS y notificaciones automáticas. Intentemos implementar esto con la ayuda del patrón de diseño del método de fábrica. Primero diseñaremos un diagrama de clases UML para esto.

En el diagrama de clases anterior tenemos una interfaz llamada Notificación, y tres clases concretas están implementando la interfaz de Notificación. Se crea una clase de fábrica NotificationFactory para obtener un objeto de notificación. Pasemos ahora a la codificación.

Crear interfaz de notificación

java

public interface Notification {
void notifyUser();
}



Nota – La interfaz anterior también se puede crear como una clase abstracta.
Crear todas las clases de implementación

SMSNotification.java
java

public class SMSNotification implements Notification {
@Override
public void notifyUser()
{
System.out.println( "Sending an SMS notification" );
}
}


EmailNotification.java
java

public class EmailNotification implements Notification {
@Override
public void notifyUser()
{
System.out.println( "Sending an e-mail notification" );
}
}



PushNotification.java
java

public class PushNotification implements Notification {
@Override
public void notifyUser()
{
System.out.println( "Sending a push notification" );
}
}



Cree una clase de fábrica NotificationFactory.java para instanciar una clase concreta.

Ahora usemos la clase de fábrica para crear y obtener un objeto de clase concreta pasando algo de información.

java

public class NotificationService {
public static void main(String args)
{
NotificationFactory notificationFactory = new NotificationFactory();
Notification notification = notificationFactory.createNotification( "SMS" );
notification.notifyUser();
}
}



Output : Sending an SMS notification

Ejemplos en tiempo real
Este patrón de diseño se ha utilizado ampliamente en JDK, como
1. El método getInstance () de java.util.Calendar, NumberFormat y ResourceBundle utiliza un patrón de diseño de método de fábrica.
2. Todas las clases contenedoras como Integer, Boolean, etc., en Java usan este patrón para evaluar los valores usando el método valueOf ().
3. java.nio.charset.Charset.forName (), java.sql.DriverManager # getConnection (), java.net.URL.openConnection (), java.lang.Class.newInstance (), java.lang.Class.forName () son algunos de los ejemplos en los que se ha utilizado el patrón de diseño del método de fábrica.
Conclusión
Hasta ahora hemos aprendido qué es el patrón de diseño del método de fábrica y cómo implementarlo. Creo que ahora tenemos una comprensión justa de las ventajas de este mecanismo de diseño.

Etiquetas del artículo:

Articles
Previous Post

SC Picture Project (Español)

Next Post

Abe deshonesto: por qué no debe usar la prueba de un centavo para verificar la profundidad de la banda de rodadura"

Deja una respuesta Cancelar la respuesta

Entradas recientes

  • Las mejores escuelas de fotografía del mundo, 2020
  • Los ciudadanos soberanos llevan su filosofía antigubernamental a las carreteras
  • Guía de costos de reparación de estuco
  • Muckrakers (Español)
  • Precision Oncology (Español)

Archivos

  • febrero 2021
  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • octubre 2020
  • septiembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.