Creative Saplings

GeeksforGeeks (Čeština)

29 září, 2020
No Comments

Jedná se o kreační návrhový vzor, který hovoří o vytvoření objektu. Tovární návrhový vzor říká, že definuje rozhraní (rozhraní Java nebo abstraktní třída) a nechá podtřídy rozhodnout, který objekt má být vytvořen. Tovární metoda v rozhraní umožňuje třídě odložit instanci na jednu nebo více konkrétních podtříd. Vzhledem k tomu, že tyto návrhové vzory hovoří o instanci objektu, spadá do kategorie kreačního návrhového vzoru. Pokud si všimneme názvu Tovární metoda, znamená to, že existuje metoda, která je továrnou, a obecně jsou továrny zapojeny do tvorby a zde se vytváří objekt. Je to jeden z nejlepších způsobů, jak vytvořit objekt, kde je logika vytváření objektu pro klienta skrytá. Nyní se podívejme na implementaci.

Implementace:
1. Definujte tovární metodu uvnitř rozhraní.
2. Nechte podtřídu implementovat výše uvedenou tovární metodu a rozhodněte se, který objekt vytvořit.
V konstruktorech Java nejsou polymorfní, ale umožněním podtřídy vytvořit objekt přidáváme do instance polymorfní chování. Stručně řečeno, snažíme se dosáhnout Pseudo polymorfismu tím, že necháme podtřídu rozhodnout, co vytvořit, a tak se tato metoda Factory také nazývá jako

Virtuální konstruktor. Zkusme to implementovat pomocí problému v reálném čase a nějakého cvičení kódování.

Prohlášení o problému:
Zvažte, že chceme implementovat službu upozornění prostřednictvím e-mailu, SMS a oznámení push. Zkusme to implementovat pomocí návrhového vzoru tovární metody. Nejprve pro to navrhneme diagram tříd UML.

Ve výše uvedeném diagramu tříd máme rozhraní s názvem Oznámení a tři konkrétní třídy implementují rozhraní oznámení. Pro získání objektu oznámení je vytvořena tovární třída NotificationFactory. Pojďme nyní skočit do kódování.

Vytvořit rozhraní oznámení

java

public interface Notification {
void notifyUser();
}



Poznámka – Výše uvedené rozhraní lze vytvořit také jako abstraktní třídu.
Vytvořte všechny implementační třídy

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



Vytvořte třídu Factory NotificationFactory.java pro vytvoření instance konkrétní třídy.

Nyní použijeme tovární třídu k vytvoření a získání objektu konkrétní třídy předáním některých informací.

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

Příklady v reálném čase
Tento návrhový vzor byl v JDK široce používán, například
1. Metoda getInstance () v java.util.Calendar, NumberFormat a ResourceBundle používá návrhový vzor tovární metody.
2. Všechny obalové třídy jako Integer, Boolean atd. V Javě používají tento vzor k vyhodnocení hodnot pomocí metody valueOf ().
3. java.nio.charset.Charset.forName (), java.sql.DriverManager # getConnection (), java.net.URL.openConnection (), java.lang.Class.newInstance (), java.lang.Class.forName () jsou některé z dalších příkladů, kdy byl použit vzor návrhu tovární metody.
Závěr
Zatím jsme zjistili, co je vzor návrhu tovární metody a jak jej implementovat. Věřím, že nyní poctivě chápeme výhody tohoto konstrukčního mechanismu.

Štítky článku:

Articles
Previous Post

SC Picture Project (Čeština)

Next Post

Nepoctivý Abe: Proč byste neměli používat Penny Test ke kontrole hloubky dezénu pneumatiky

Napsat komentář Zrušit odpověď na komentář

Nejnovější příspěvky

  • Nejlepší fotografické školy na světě, 2020
  • Sovereign Citizens Take their Anti-Government Philosophy to the Roads
  • Průvodce náklady na opravy Stucco
  • Muckrakers (Čeština)
  • Precision Oncology (Čeština)

Archivy

  • Únor 2021
  • Leden 2021
  • Prosinec 2020
  • Listopad 2020
  • Říjen 2020
  • Září 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.