Creative Saplings

GeeksforGeeks (Svenska)

september 29, 2020
No Comments

Det är ett skapande designmönster som talar om skapandet av ett objekt. Fabriksdesignmönstret säger att definiera ett gränssnitt (Ett Java-gränssnitt eller en abstrakt klass) och låta underklasserna bestämma vilket objekt som ska instansieras. Fabriksmetoden i gränssnittet låter en klass skjuta upp momentiseringen till en eller flera konkreta underklasser. Eftersom detta designmönster talar om instantiering av ett objekt och så faller det under kategorin skapande designmönster. Om vi märker namnet Fabriksmetod betyder det att det finns en metod som är en fabrik och i allmänhet är fabriker involverade i skapande saker och här skapas ett objekt. Det är ett av de bästa sätten att skapa ett objekt där objektskapande logik är dold för klienten. Låt oss nu titta på implementeringen.

Implementering:
1. Definiera en fabriksmetod i ett gränssnitt.
2. Låt underklassen implementera ovanstående fabriksmetod och bestämma vilket objekt du vill skapa.
I Java-konstruktörer är inte polymorfa, men genom att tillåta underklass att skapa ett objekt lägger vi till polymorft beteende till instantieringen. Kort sagt, vi försöker uppnå Pseudo-polymorfism genom att låta underklassen bestämma vad som ska skapas, och så kallas denna Factory-metod också som

Virtuell konstruktör. Låt oss försöka implementera det med ett realtidsproblem och lite kodningsövning.

Problemförklaring:
Tänk på att vi vill implementera en aviseringstjänst via e-post, SMS och push-avisering. Låt oss försöka implementera detta med hjälp av fabriksmetodens designmönster. Först ska vi utforma ett UML-klassdiagram för detta.

I klassdiagrammet ovan har vi ett gränssnitt som kallas Notification och tre konkreta klasser implementerar Notification interface. En fabriksklass NotificationFactory skapas för att få ett Notification-objekt. Låt oss hoppa in i kodningen nu.

Skapa meddelandegränssnitt

java

public interface Notification {
void notifyUser();
}



Obs – Ovanstående gränssnitt kan skapas som en abstrakt klass också.
Skapa alla 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" );
}
}



Skapa en fabriksklass NotificationFactory.java för att initiera betongklass.

Låt oss nu använda fabriksklass för att skapa och få ett objekt av konkret klass genom att skicka lite information.

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

Exempel i realtid
Detta designmönster har använts i stor utsträckning i JDK, till exempel
1. getInstance () -metoden för java.util.Calendar, NumberFormat och ResourceBundle använder designmönster för fabriksmetoder.
2. Alla omslagsklasser som Integer, Boolean etc i Java använder detta mönster för att utvärdera värdena med metoden valueOf ().
3. java.nio.charset.Charset.forName (), java.sql.DriverManager # getConnection (), java.net.URL.openConnection (), java.lang.Class.newInstance (), java.lang.Class.forName () är några av exemplen där mönster för design av fabriksmetoder har använts.
Slutsats
Hittills har vi lärt oss vad som är fabriksmetodsmönster och hur man implementerar det. Jag tror att vi nu har en rättvis förståelse av fördelen med denna designmekanism.

Artikeltaggar:

Articles
Previous Post

SC Picture Project (Svenska)

Next Post

Oärligt Abe: Varför du inte ska använda Penny-testet för att kontrollera däckmönsterdjupet

Lämna ett svar Avbryt svar

Senaste inläggen

  • Världens bästa fotoskolor, 2020
  • Suveräna medborgare tar sin regeringsfilosofi mot vägarna
  • Guide för reparation av stuckaturer
  • Muckrakers (Svenska)
  • Precision Oncology (Svenska)

Arkiv

  • februari 2021
  • januari 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.