Σύστημα Σχεδιασμού Σειρά # 2 - Πώς να εφαρμόσει ένα σύστημα λογισμικού για την κατασκευή ενός burrito;

Νομίζω ότι μπορώ να φάω στο Chipotle για όλα τα γεύματά μου. Λατρεύω τις προσφορές κρέατος, καστανό ρύζι, καλαμπόκι, τυρί, salsa και το ονομάζετε. Για την κορυφή όλα, guac στο πλάι. Γράφοντας σχετικά με αυτό, με κάνει να θέλω να κάνω ένα τρέξιμο Chipotle.

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

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

Κατάσταση: Σχεδιάστε ένα σύστημα για να δημιουργήσετε ένα Burrito

Ένας σχεδιασμός σχεδίασης διακοσμητή αποτελείται από έναν πελάτη και αρκετούς διακοσμητές. Φανταστείτε ότι περπατάτε στο περίπτερο burrito στο Chipotle και ρωτάτε τον πρώτο εργάτη ότι χρειάζεστε ένα burrito. Το πρώτο πράγμα που κάνει ο εργαζόμενος είναι να απλώσει την τορτίγια σε ένα πιάτο και να εφαρμόσει την εξάπλωση. Εδώ, είσαι ο πελάτης. Ο πρώτος εργαζόμενος που συναντάς είναι διακοσμητής. Η ευθύνη του πρώτου εργαζόμενου είναι περιορισμένη. Λαμβάνουν την τορτίγια από τη στοίβα, το βάζουν σε ένα πιάτο και εφαρμόζουν την εξάπλωση. Αφού ολοκληρωθεί η δουλειά τους, πιέζουν την πλάκα στον επόμενο εργάτη. Ο πρώτος διακοσμητής έχει δύο βασικές λειτουργίες

  1. Κατασκευάστε ένα ημιτελές burrito
  2. Μάθετε πού είναι ο επόμενος σταθμός εργασίας και πιέστε την πλάκα στον επόμενο σταθμό εργασίας
Εικόνα 1: Μοτίβο διακοσμητή - Δημιουργία αντικειμένων

Αφού πιέσετε το πιάτο στο δεύτερο σταθμό εργασίας, ο εργαζόμενος στο σταθμό αυτό σας ρωτά ποιο είδος ρύζι και φασόλια θέλετε, προσθέτει και ωθεί την πλάκα στον τρίτο σταθμό εργασίας. Αυτό είναι λίγο διαφορετικό στο μοτίβο διακοσμητή. Ο διακοσμητής 2 δεν θα ζητήσει από τον Πελάτη τι είδους φασόλια και ρύζι χρειάζεται. Ο διακοσμητής 2 θα έχει ήδη τις απαιτούμενες πληροφορίες ως μέρος του αρχικού αιτήματος. Αφού γίνει η δουλειά του, ο διακοσμητής 2 θα σπρώξει την πλάκα στην επόμενη θέση εργασίας όπου προστίθεται το κοτόπουλο. Ο διακοσμητής 3 θα σπρώξει την πλάκα στην επόμενη θέση εργασίας. Ο διακοσμητής 4 θα προσθέσει salsa, τυρί και guac και ο τελικός διακοσμητής θα τυλίξει το burrito και θα τον παραδώσει στον πελάτη.

Εικ. 2: Σχεδιασμός συστήματος μοτίβων διακοσμητή

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

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

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

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