Creative Saplings

GeeksforGeeks (Português)

Setembro 29, 2020
No Comments

É um padrão de design de criação que fala sobre a criação de um objeto. O padrão de design de fábrica diz que define uma interface (uma interface java ou uma classe abstrata) e permite que as subclasses decidam qual objeto instanciar. O método de fábrica na interface permite que uma classe adie a instanciação para uma ou mais subclasses concretas. Uma vez que esses padrões de design falam sobre instanciação de um objeto e, portanto, se enquadram na categoria de padrão de design criativo. Se notarmos o nome Método de fábrica, significa que existe um método que é uma fábrica e, em geral, as fábricas estão envolvidas com coisas criativas e aqui com isso um objeto está sendo criado. É uma das melhores maneiras de criar um objeto onde a lógica de criação do objeto fica oculta para o cliente. Agora, vamos dar uma olhada na implementação.

Implementação:
1. Defina um método de fábrica dentro de uma interface.
2. Deixe que a subclasse implemente o método de fábrica acima e decida qual objeto criar.
Em Java, os construtores não são polimórficos, mas ao permitir que a subclasse crie um objeto, estamos adicionando um comportamento polimórfico à instanciação. Resumindo, estamos tentando alcançar o Pseudo polimorfismo permitindo que a subclasse decida o que criar e, portanto, este método de fábrica também é chamado de

Construtor virtual. Vamos tentar implementá-lo com um problema em tempo real e alguns exercícios de codificação.

Declaração do problema:
Considere que queremos implementar um serviço de notificação por e-mail, SMS e notificação push. Vamos tentar implementar isso com a ajuda do padrão de design do método de fábrica. Primeiro, projetaremos um diagrama de classes UML para isso.

No diagrama de classes acima, temos uma interface chamada Notificação, e três classes concretas estão implementando a interface Notificação. Uma classe de fábrica NotificationFactory é criada para obter um objeto Notification. Vamos pular para a codificação agora.

Criar interface de notificação

java

public interface Notification {
void notifyUser();
}



Nota – A interface acima também pode ser criada como uma classe abstrata.
Crie todas as classes de implementação

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" );
}
}



Crie uma classe de fábrica NotificationFactory.java para instanciar a classe concreta.

Agora vamos usar a classe de fábrica para criar e obter um objeto de classe concreta passando algumas informações.

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

Exemplos em tempo real
Esse padrão de design tem sido amplamente usado no JDK, como o
1. O método getInstance () de java.util.Calendar, NumberFormat e ResourceBundle usa o padrão de design do método de fábrica.
2. Todas as classes de wrapper como Integer, Boolean etc, em Java usam este padrão para avaliar os valores usando o 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 () são alguns dos outros exemplos em que o padrão de projeto do método de fábrica foi usado.
Conclusão
Até agora, aprendemos o que é o padrão de projeto do método de fábrica e como implementá-lo. Acredito que agora temos um bom entendimento das vantagens desse mecanismo de design.

Tags de artigo:

Articles
Previous Post

SC Picture Project (Português)

Next Post

Abe desonesto: por que você não deveria usar o teste de centavo para verificar a profundidade da banda de rodagem

Deixe uma resposta Cancelar resposta

Artigos recentes

  • As melhores escolas de fotografia do mundo, 2020
  • Cidadãos soberanos levam sua filosofia antigovernamental para as estradas
  • Guia de custos de reparo de estuque
  • Muckrakers (Português)
  • Oncologia de precisão

Arquivo

  • Fevereiro 2021
  • Janeiro 2021
  • Dezembro 2020
  • Novembro 2020
  • Outubro 2020
  • Setembro 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.