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

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

Μια τυπική κλάση αντικειμένου περιέχει χαρακτηριστικά, κατασκευαστές και μεθόδους. Το μοτίβο δημιουργίας σάς επιτρέπει να εξαγάγετε τη λογική κατασκευής από την κλάση αντικειμένων και να την τοποθετήσετε σε κλάσεις που ονομάζονται builders. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε αυτές τις κλάσεις builder για να δημιουργήσετε διαφορετικές παραλλαγές του ίδιου αντικειμένου.

Εφαρμογή του μοτίβου Builder στην Java

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

instagram viewer

Η κατηγορία προϊόντων

Μια προσέγγιση είναι να κάνετε το πρόγραμμα δημιουργίας διεπαφής, αλλά θα χρειαστεί πρώτα να δημιουργήσετε μια κατηγορία προϊόντων. Το προϊόν σε αυτό το δείγμα εφαρμογής είναι μια πίτσα.

δημόσιοτάξηΠίτσα{
// ιδιότητες
ιδιωτικόςενθ αριθμός παραγγελίας;
ιδιωτικός Σειρά ζύμη πίτσας;
ιδιωτικός Σειρά επικάλυψη;

// getters και setters
δημόσιοενθgetOrderNumber(){
ΕΠΙΣΤΡΟΦΗ αριθμός παραγγελίας;
}

δημόσιοκενόςsetOrderNumber(ενθ αριθμός παραγγελίας){
Αυτό.orderNumber = orderNumber;
}

δημόσιο Σειρά getPizzaDough(){
ΕΠΙΣΤΡΟΦΗ ζύμη πίτσας;
}

δημόσιοκενόςsetPizzaDough(Ζύμη πίτσας με κορδόνια){
Αυτό.pizzaDough = ζύμη πίτσας;
}

δημόσιο Σειρά getTopping(){
ΕΠΙΣΤΡΟΦΗ επικάλυψη;
}

δημόσιοκενόςsetTopping(Τάπα με κορδόνια){
Αυτό.topping = κάλυμμα;
}
}

Η τάξη των οικοδόμων

Η πίτσα Κλάση Java έχει τρεις ιδιότητες και τους αντίστοιχους λήπτες και ρυθμιστές τους, αλλά δεν υπάρχουν μεθόδους κατασκευής. Η διεπαφή δημιουργίας θα σας επιτρέψει να δημιουργήσετε κάθε πτυχή του αντικειμένου πίτσας ξεχωριστά. Στη συνέχεια θα σας επιτρέψει να ανακτήσετε ολόκληρο το αντικείμενο πίτσας.

δημόσιοδιεπαφήΟικοδόμος{
δημόσιοκενόςΔημιουργήστε Πίτσα Ζύμη();
δημόσιοκενόςΔημιουργία Κορυφής();
δημόσιο Πίτσα πάρε Πίτσα();
}

Η εφαρμογή δείγματος πίτσας επιτρέπει στους πελάτες να παραγγείλουν οποιαδήποτε επικάλυψη, όπως τυρί, πεπερόνι, κρεμμύδι ή διαφορετικούς συνδυασμούς. Επομένως, μια πίτσα που θα παραγγείλει ένας πελάτης είναι το τυρί.

δημόσιοτάξηCheesePizzaBuilderυλοποιείΟικοδόμος{
ιδιωτικός Πίτσα πίτσα?

δημόσιοCheesePizzaBuilder(){
Αυτό.πίτσα = νέος Πίτσα();
}

@Καταπατώ
δημόσιοκενόςΔημιουργήστε Πίτσα Ζύμη(){
Αυτό.pizza.setPizzaDough("Ζύμη");
}

@Καταπατώ
δημόσιοκενόςΔημιουργία Κορυφής(){
Αυτό.pizza.setTopping("Τυρί");
}

@Καταπατώ
δημόσιο Πίτσα πάρε Πίτσα(){
ΕΠΙΣΤΡΟΦΗΑυτό.πίτσα;
}
}

Η κλάση CheesePizzaBuilder υλοποιεί τη διεπαφή Builder και τη χρησιμοποιεί για να δημιουργήσει μια νέα πίτσα τυριού. Αυτή είναι μια αναπαράσταση του αντικειμένου Pizza. Το κάνει επίσης με τρόπο που είναι ανεξάρτητος από την κατηγορία Pizza.

Η τάξη CheesePizzaBuilder δεν γνωρίζει πολλά για την κατηγορία Pizza, ξέρει μόνο όσα χρειάζεται να γνωρίζει για να ολοκληρώσει τη λειτουργία της. Γνωρίζει ότι η κατηγορία Pizza έχει μια ιδιότητα ζύμης και επικάλυψης και ορίζει αυτές τις ιδιότητες σε δύο συγκεκριμένες τιμές που θα έχει κάθε πίτσα με τυρί. Τώρα κάθε φορά που η εφαρμογή καλεί την κλάση CheesePizzaBuilder θα δημιουργεί μια νέα Πίτσα με επικάλυψη τυριού.

Η Τάξη Διευθυντή

Η τάξη σκηνοθέτη είναι μια κρίσιμη πτυχή του μοτίβου του οικοδόμου. Ο μοναδικός σκοπός μιας κλάσης συγκεκριμένων κατασκευαστών είναι να δημιουργήσει ένα συγκεκριμένο αντικείμενο. Αυτό το επιτυγχάνει δημιουργώντας τα διαφορετικά μέρη ενός αντικειμένου ξεχωριστά.

Ωστόσο, οι κατηγορίες δομικού σκυροδέματος δεν γνωρίζουν τον αλγόριθμο. Καμία από τις κατηγορίες οικοδόμων δεν ξέρει να φτιάξει τη ζύμη πριν προσθέσει την επικάλυψη. Αυτή είναι η λειτουργία της τάξης του σκηνοθέτη.

δημόσιοτάξηΔιευθυντής{
ιδιωτικός Builder pizzaBuilder;

δημόσιοΔιευθυντής(Builder pizzaBuilder){
Αυτό.pizzaBuilder = PizzaBuilder;
}

δημόσιο Πίτσα πάρε Πίτσα(){
ΕΠΙΣΤΡΟΦΗΑυτό.pizzaBuilder.getPizza();
}

δημόσιοκενόςmakePizza(){
Αυτό.pizzaBuilder.createPizzaDough();
Αυτό.pizzaBuilder.createTopping();
}
}

Η κλάση Director χρησιμοποιεί τη διεπαφή δημιουργίας για να φτιάξει πίτσες. Είναι ο φύλακας του αλγορίθμου.

Τα πλεονεκτήματα της χρήσης του μοτίβου σχεδίασης Builder

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

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