Creative Saplings

GeeksforGeeks (Dansk)

september 29, 2020
No Comments

Det er et skabelsesmønster, der taler om oprettelsen af et objekt. Fabriksdesignmønsteret siger, at der defineres en grænseflade (En java-grænseflade eller en abstrakt klasse) og lader underklasser bestemme, hvilket objekt der skal instantieres. Fabriksmetoden i grænsefladen lader en klasse udsætte instantieringen til en eller flere konkrete underklasser. Da dette designmønster taler om instantiering af et objekt, og så kommer det ind under kategorien skabelsesmønster. Hvis vi bemærker navnet Fabriksmetode, betyder det, at der er en metode, der er en fabrik, og generelt er fabrikker involveret i skabende ting, og her med dette oprettes et objekt. Det er en af de bedste måder at oprette et objekt på, hvor logikken til oprettelse af objekter er skjult for klienten. Lad os nu se på implementeringen.

Implementering:
1. Definer en fabriksmetode inde i en grænseflade.
2. Lad underklassen implementere ovenstående fabriksmetode, og beslut hvilket objekt du vil oprette.
I Java-konstruktører er ikke polymorfe, men ved at tillade underklasse at oprette et objekt tilføjer vi polymorf adfærd til instantieringen. Kort sagt forsøger vi at opnå Pseudo-polymorfisme ved at lade underklassen beslutte, hvad de skal oprette, og derfor kaldes denne fabriksmetode også som

Virtuel konstruktør. Lad os prøve at implementere det med et realtidsproblem og nogle kodningsøvelser.

Problemerklæring:
Overvej, at vi vil implementere en meddelelsestjeneste via e-mail, SMS og push-underretning. Lad os prøve at implementere dette ved hjælp af fabriksmetodedesignmønster. Først designer vi et UML-klassediagram til dette.

I ovenstående klassediagram har vi en grænseflade kaldet Notification, og tre konkrete klasser implementerer Notification-interface. En fabriksklasse NotificationFactory oprettes for at få et Notification-objekt. Lad os hoppe ind i kodningen nu.

Opret notifikationsgrænseflade

java

public interface Notification {
void notifyUser();
}



Bemærk – Ovenstående interface kunne også oprettes som en abstrakt klasse.
Opret alle implementeringsklasser

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



Opret en fabriksklasse NotificationFactory.java for at instantiere betonklasse.

Lad os nu bruge fabriksklasse til at oprette og få et objekt af konkret klasse ved at videregive nogle oplysninger.

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

Eksempler i realtid
Dette designmønster er blevet udbredt i JDK, såsom
1. getInstance () -metoden til java.util.Calendar, NumberFormat og ResourceBundle bruger fabriksmetodedesignmønster.
2. Alle indpakningsklasser som Integer, Boolean osv. I Java bruger dette mønster til at evaluere værdierne ved hjælp af valueOf () -metoden.
3. java.nio.charset.Charset.forName (), java.sql.DriverManager # getConnection (), java.net.URL.openConnection (), java.lang.Class.newInstance (), java.lang.Class.forName () er nogle af eksemplerne, hvor designmetode til fabriksmetoder er blevet brugt.
Konklusion
Indtil videre har vi lært, hvad der er fabriksmetodemønster, og hvordan man implementerer det. Jeg tror nu, at vi har en god forståelse af fordelen ved denne designmekanisme.

Artikel-tags:

Articles
Previous Post

SC Picture Project (Dansk)

Next Post

Uærlig Abe: Hvorfor du ikke skal bruge Penny-testen til at kontrollere dækdækdybden

Skriv et svar Annuller svar

Seneste indlæg

  • Verdens bedste fotografiskoler, 2020
  • Suveræne borgere tager deres regeringsfilosofi til vejene
  • Guide til reparation af stuk reparationer
  • Muckrakers (Dansk)
  • Precision Oncology

Arkiver

  • februar 2021
  • januar 2021
  • december 2020
  • november 2020
  • oktober 2020
  • september 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.