Creative Saplings

GeeksforGeeks (Română)

septembrie 29, 2020
No Comments

Este un model de proiectare de creație care vorbește despre crearea unui obiect. Modelul de proiectare din fabrică spune că definește o interfață (O interfață java sau o clasă abstractă) și permite subclaselor să decidă ce obiect să instanțeze. Metoda din fabrică din interfață permite unei clase să amâne instanțierea la una sau mai multe subclase concrete. Întrucât aceste modele de proiectare vorbesc despre instanțierea unui obiect și astfel se încadrează în categoria modelului de design creațional. Dacă observăm denumirea de metodă Factory, asta înseamnă că există o metodă care este o fabrică și, în general, fabricile sunt implicate în lucruri de creație și aici cu aceasta se creează un obiect. Este una dintre cele mai bune modalități de a crea un obiect în care logica de creare a obiectelor este ascunsă clientului. Acum să analizăm implementarea.

Implementarea:
1. Definiți o metodă din fabrică în interiorul unei interfețe.
2. Permiteți subclasei să implementeze metoda din fabrică de mai sus și să decidă ce obiect să creați.
În Java constructorii nu sunt polimorfi, dar permițând subclasei să creeze un obiect, adăugăm comportament polimorf instanțierii. Pe scurt, încercăm să realizăm pseudo-polimorfism lăsând subclasa să decidă ce să creeze, și astfel această metodă Factory este numită și ca

constructor virtual. Să încercăm să-l implementăm cu o problemă în timp real și cu un exercițiu de codare.

Declarație de problemă:
Luați în considerare faptul că dorim să implementăm un serviciu de notificare prin e-mail, SMS și notificare push. Să încercăm să implementăm acest lucru cu ajutorul modelului de proiectare a metodelor din fabrică. Mai întâi vom proiecta o diagramă de clasă UML pentru aceasta.

În diagrama de clasă de mai sus avem o interfață numită Notificare și trei clase concrete implementează interfața Notificare. O clasă fabrică NotificationFactory este creată pentru a obține un obiect Notification. Să trecem în codare acum.

Creați o interfață de notificare

java

public interface Notification {
void notifyUser();
}



Notă – Interfața de mai sus ar putea fi creată și ca o clasă abstractă.
Creați toate clasele de implementare

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



Creați o clasă din fabrică NotificationFactory.java pentru a crea o clasă concretă.

Acum să folosim clasa din fabrică pentru a crea și a obține un obiect de clasă concretă prin transmiterea unor informații.

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

Exemple în timp real
Acest model de design a fost utilizat pe scară largă în JDK, cum ar fi
1. Metoda getInstance () a java.util.Calendar, NumberFormat și ResourceBundle utilizează modelul de proiectare a metodei din fabrică.
2. Toate clasele de împachetare, cum ar fi Integer, Boolean etc, în Java utilizează acest model pentru a evalua valorile folosind metoda valueOf ().
3. java.nio.charset.Charset.forName (), java.sql.DriverManager # getConnection (), java.net.URL.openConnection (), java.lang.Class.newInstance (), java.lang.Class.forName () sunt câteva dintre exemplele în care a fost utilizat modelul de proiectare a metodei din fabrică.
Concluzie
Până acum am aflat ce este modelul de proiectare a metodei din fabrică și cum să-l implementăm. Cred că acum înțelegem corect avantajul acestui mecanism de proiectare.

Etichete articol:

Articles
Previous Post

SC Picture Project (Română)

Next Post

Abe necinstite: De ce nu ar trebui să utilizați testul Penny pentru a verifica adâncimea benzii de rulare a anvelopelor

Lasă un răspuns Anulează răspunsul

Articole recente

  • Cele mai bune școli de fotografie din lume, 2020
  • Cetățenii suverani își duc filosofia anti-guvernamentală la drumuri
  • Ghid de costuri de reparații stuc
  • Muckrakers (Română)
  • Oncologie de precizie

Arhive

  • februarie 2021
  • ianuarie 2021
  • decembrie 2020
  • noiembrie 2020
  • octombrie 2020
  • septembrie 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.