Factory Pattern σε C++

Factory Pattern Se C



Το Factory Pattern είναι ένας τρόπος δημιουργίας αντικειμένων στην ανάπτυξη λογισμικού χωρίς να χρειάζεται να γνωρίζετε τις συγκεκριμένες λεπτομέρειες του τρόπου δημιουργίας τους. Παρέχει μια απλοποιημένη διεπαφή για τη δημιουργία αντικειμένων κρύβοντας τη σύνθετη λογική δημιουργίας πίσω από μια κλάση εργοστασίου. Ανήκει στην κατηγορία των μοτίβων σχεδίασης που απευθύνονται σε μηχανισμούς δημιουργίας αντικειμένων. Αυτό το άρθρο καλύπτει εργοστασιακά μοτίβα σε C++.

Εισαγωγή στο Factory Pattern

Ένα σχέδιο σχεδίασης είναι μια μέθοδος επίλυσης επαναλαμβανόμενων προβλημάτων στο σχεδιασμό λογισμικού. Το Factory Pattern είναι ένα από τα σχεδιαστικά μοτίβα που βοηθούν στη δημιουργία αντικειμένων με ευέλικτο και αποσυνδεδεμένο τρόπο.

Το Factory Pattern είναι ένα μοτίβο σχεδίασης δημιουργίας στη C++ που επιτρέπει τη δημιουργία αντικειμένων χωρίς να γνωρίζουμε ρητά την κλάση του αντικειμένου. Παρέχει έναν τρόπο ενθυλάκωσης της λογικής δημιουργίας πολύπλοκων αντικειμένων σε μια ξεχωριστή εργοστασιακή κλάση. Αυτό γίνεται με τον καθορισμό μιας κοινής διεπαφής για τη δημιουργία αντικειμένων, όπου η συγκεκριμένη κλάση του αντικειμένου καθορίζεται κατά το χρόνο εκτέλεσης.







Αντί να δημιουργήσουμε ένα αντικείμενο απευθείας, χρησιμοποιούμε την εργοστασιακή μέθοδο για να μας δώσει μια παρουσία του αντικειμένου που θέλουμε. Με αυτόν τον τρόπο, μπορούμε να αποκρύψουμε τα περίπλοκα βήματα που περιλαμβάνονται στη δημιουργία του αντικειμένου και να κάνουμε πιο εύκολη την αλλαγή ή την τροποποίηση του αντικειμένου στο μέλλον.



Γιατί να χρησιμοποιήσετε το Factory Pattern;

Υπάρχουν διάφοροι λόγοι για τους οποίους μπορεί να θέλουμε να χρησιμοποιήσουμε το εργοστασιακό μοτίβο. Ένας λόγος είναι ότι επιτρέπει την αποσύνδεση κώδικα από συγκεκριμένες κλάσεις. Χρησιμοποιώντας μια εργοστασιακή μέθοδο, μπορούμε εύκολα να αλλάξουμε μια κλάση με μια άλλη χωρίς να χρειάζεται να αλλάξουμε άλλον κώδικα και να τον κάνουμε πιο αποτελεσματικό.



Ένας άλλος λόγος για να χρησιμοποιήσετε το εργοστασιακό μοτίβο είναι ότι μπορεί να κάνει τον κώδικα πιο ελεγχόμενο. Τα εργοστασιακά μοτίβα μας επιτρέπουν να δοκιμάσουμε τον κώδικα δημιουργώντας εικονικά αντικείμενα.





Ακολουθούν μερικοί από τους περισσότερους λόγους για τους οποίους χρησιμοποιείται το εργοστασιακό μοτίβο στη C++:

  • Το μοτίβο Factory Method χρησιμοποιείται όταν μια κλάση δεν γνωρίζει εκ των προτέρων ποια αντικείμενα χρειάζεται να δημιουργήσει.
  • Το μοτίβο χρησιμοποιείται όταν μια κλάση βασίζεται στις υποκλάσεις της για να καθορίσει τα αντικείμενα που δημιουργεί.
  • Είναι χρήσιμο όταν θέλετε να ενσωματώσετε τη λογική για τη δημιουργία ενός σύνθετου αντικειμένου σε ένα μέρος.

Παράδειγμα Factory Pattern σε C++

Στη C++, μπορούμε να εφαρμόσουμε το εργοστασιακό μοτίβο ορίζοντας μια αφηρημένη βασική κλάση με μια εικονική εργοστασιακή μέθοδο. Αυτή η μέθοδος θα πρέπει να επιστρέψει έναν δείκτη στην επιθυμητή παρουσία κλάσης. Μετά από αυτό, μπορούμε να εξαγάγουμε συγκεκριμένες κλάσεις από αυτή τη βασική κλάση και να παρακάμψουμε την εργοστασιακή μέθοδο για να επιστρέψουμε ένα στιγμιότυπο της κατάλληλης κλάσης.



Ακολουθεί ένα παράδειγμα για το πώς μπορούμε να χρησιμοποιήσουμε αυτήν την υλοποίηση του εργοστασιακού μοτίβου:

#include

χρησιμοποιώντας το namespace std ;

τάξη σχήμα {

δημόσιο :

εικονικός κενός σχεδιάζω ( ) = 0 ;

στατικός Σχήμα * Δημιουργία Σχήματος ( ενθ τύπος ) ;

} ;

κύκλος τάξης : δημόσιο σχήμα {

δημόσιο :

κενός σχεδιάζω ( ) {

cout << «Σχεδιάζοντας έναν κύκλο». << endl ;

}

} ;

τάξη Ορθογώνιο : δημόσιο σχήμα {

δημόσιο :

κενός σχεδιάζω ( ) {

cout << «Σχεδιάζοντας ένα ορθογώνιο». << endl ;

}

} ;

Σχήμα * Σχήμα :: Δημιουργία Σχήματος ( ενθ τύπος ) {

αν ( τύπος == 1 ) {
ΕΠΙΣΤΡΟΦΗ νέος κύκλος ( ) ;
} αλλού αν ( τύπος == 2 ) {
ΕΠΙΣΤΡΟΦΗ νέο Ορθογώνιο ( ) ;
} αλλού {
ΕΠΙΣΤΡΟΦΗ nullptr ;
}
}


ενθ κύριος ( ) {

Σχήμα * κύκλος = Σχήμα :: Δημιουργία Σχήματος ( 1 ) ;

κύκλος -> σχεδιάζω ( ) ;

Σχήμα * ορθογώνιο παραλληλόγραμμο = Σχήμα :: Δημιουργία Σχήματος ( 2 ) ;

ορθογώνιο παραλληλόγραμμο -> σχεδιάζω ( ) ;

ΕΠΙΣΤΡΟΦΗ 0 ;

}

Σε αυτό το παράδειγμα, έχουμε μια κλάση Shape με δύο παραγόμενες κλάσεις: Circle και Rectangle. Η κλάση Shape έχει μια καθαρή εικονική συνάρτηση draw(), η οποία υλοποιείται από τις παραγόμενες κλάσεις. Η κλάση Shape έχει επίσης μια στατική συνάρτηση createShape(int type), η οποία λειτουργεί ως εργοστασιακή μέθοδος για τη δημιουργία παρουσιών των παραγόμενων κλάσεων με βάση τον καθορισμένο τύπο. Η συνάρτηση draw() καλείται στα δημιουργημένα αντικείμενα για να δείξει τη συγκεκριμένη συμπεριφορά τους.

  Δημιουργήθηκε αυτόματα μια εικόνα που περιέχει κείμενο, γραμματοσειρά, στιγμιότυπο οθόνης

συμπέρασμα

Το Factory Pattern είναι ένα μοτίβο σχεδίασης δημιουργίας στη C++ που επιτρέπει τη δημιουργία αντικειμένων χωρίς να γνωρίζουμε ρητά την κλάση του αντικειμένου. Παρέχει μια απλοποιημένη διεπαφή για τη δημιουργία αντικειμένων κρύβοντας τη σύνθετη λογική δημιουργίας πίσω από μια κλάση εργοστασίου. Αυτό γίνεται με τον καθορισμό μιας κοινής διεπαφής για τη δημιουργία αντικειμένων, όπου η συγκεκριμένη κλάση του αντικειμένου καθορίζεται κατά το χρόνο εκτέλεσης. Διαβάστε περισσότερα για τα εργοστασιακά μοτίβα σε αυτό το άρθρο.