Creative Saplings

GeeksforGeeks (Norsk)

september 29, 2020
No Comments

Det er et skapelsesmønster som snakker om opprettelsen av et objekt. Fabrikkdesignmønsteret sier at definere et grensesnitt (Et java-grensesnitt eller en abstrakt klasse) og la underklassene bestemme hvilket objekt du vil instantiere. Fabriksmetoden i grensesnittet lar en klasse utsette instantiering til en eller flere konkrete underklasser. Siden dette designmønsteret snakker om instantiering av et objekt, så kommer det inn under kategorien skapelsesmønster. Hvis vi legger merke til navnet Fabrikkmetode, betyr det at det er en metode som er en fabrikk, og generelt er fabrikker involvert i skapende ting, og her blir det opprettet et objekt. Det er en av de beste måtene å lage et objekt der logikken til gjenoppretting av objekter er skjult for klienten. La oss nå se på implementeringen.

Implementering:
1. Definer en fabrikkmetode i et grensesnitt.
2. La underklassen implementere ovennevnte fabrikkmetode og bestem hvilket objekt du vil lage.
I Java-konstruktører er ikke polymorfe, men ved å tillate underklasse å lage et objekt, legger vi til polymorf oppførsel til instantieringen. Kort fortalt prøver vi å oppnå Pseudo-polymorfisme ved å la underklassen bestemme hva de skal lage, og så kalles denne Factory-metoden også som

Virtual constructor. La oss prøve å implementere det med et sanntidsproblem og litt koding.

Problemerklæring:
Vurder at vi ønsker å implementere en varslingstjeneste via e-post, SMS og push-varsling. La oss prøve å implementere dette ved hjelp av fabrikkmetodedesignmønster. Først skal vi utforme et UML-klassediagram for dette.

I klassediagrammet ovenfor har vi et grensesnitt som heter Notification, og tre konkrete klasser implementerer Notification interface. En fabrikklasse NotificationFactory er opprettet for å få et varslingsobjekt. La oss hoppe inn i kodingen nå.

Opprett varslingsgrensesnitt

java

public interface Notification {
void notifyUser();
}



Merk – Over grensesnittet kan også opprettes som en abstrakt klasse.
Opprett 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" );
}
}



Opprett en fabriksklasse NotificationFactory.java for å sette i gang konkret klasse.

La oss nå bruke fabrikklasse til å lage og få et objekt av konkret klasse ved å gi litt informasjon.

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 sanntid
Dette designmønsteret har blitt mye brukt i JDK, for eksempel
1. getInstance () -metoden til java.util.Calendar, NumberFormat og ResourceBundle bruker fabrikkmetodedesignmønster.
2. Alle wrapper-klassene som Integer, Boolean etc, i Java bruker dette mønsteret til å evaluere verdiene ved hjelp av 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 noen av eksemplene der fabrikkmetodes designmønster har blitt brukt.
Konklusjon
Så langt har vi lært hva som er fabrikkmetodes designmønster og hvordan vi kan implementere det. Jeg tror nå vi har en god forståelse av fordelen med denne designmekanismen.

Artikkelmerker:

Articles
Previous Post

SC Picture Project (Norsk)

Next Post

Uærlig Abe: Hvorfor du ikke skulle bruke Penny Test for å sjekke dekkdekkdybde

Legg igjen en kommentar Avbryt svar

Siste innlegg

  • De beste fotografiskolene i verden, 2020
  • Suverene borgere tar sin regjeringsfilosofi til veiene
  • Veiledning for stukkaturreparasjon
  • Muckrakers (Norsk)
  • Precision Oncology (Norsk)

Arkiv

  • februar 2021
  • januar 2021
  • desember 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.