Σχεδιαστικά πρότυπα: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ Bot: Replace deprecated <source> tag and "enclose" parameter.
Stergios.ntua (συζήτηση | συνεισφορές)
Χωρίς σύνοψη επεξεργασίας
Γραμμή 2:
 
== Ιστορικό ==
Κατά τα τέλη της δεκαετίας του 1970 ένας [[αρχιτεκτονική|αρχιτέκτονας]] ονόματι [[Κρίστοφερ Αλεξάντερ]] επιχείρησε να βρει και να καταγράψει αποδεδειγμένα ποιοτικούς σχεδιασμούς στον τομέα των κατασκευών. Έτσι μελέτησε πολλές διαφορετικές κατασκευές που εξυπηρετούσαν τον ίδιο σκοπό και προσπάθησε να ανακαλύψει κοινά στοιχεία, τα οποία κατηγοριοποίησε σε ''σχεδιαστικά πρότυπα''. Το 1987 η ιδέα της εύρεσης σχεδιαστικών προτύπων εφαρμόστηκε για πρώτη φορά στη μηχανική λογισμικού και μέχρι τα μέσα της δεκαετίας του '90 η εν λόγω έννοια είχε καθιερωθεί και εξαπλωθεί, προσανατολισμένη πλέον προς τον [[αντικειμενοστρεφήςΑντικειμενοστραφής προγραμματισμός|αντικειμενοστρεφήαντικειμενοστραφή προγραμματισμό]]. Ιδιαίτερα σημαντική εξέλιξη προς αυτή την κατεύθυνση υπήρξε η έκδοση του βιβλίου ''Design Patterns: Elements of Reusable Object-Oriented Software'' των Erich Gamma, Richard Helm, Ralph Johnson και John Vlissides, το 1994. Οι τέσσερις αυτοί συγγραφείς αναφέρονται στη βιβλιογραφία ως "Συμμορία των Τεσσάρων" (Gang of Four) λόγω του εν λόγω βιβλίου.<ref>{{cite book|last=Holzner|first=Steve|title=Design Patterns For Dummies|year=2006|publisher=Wiley|isbn=978-0-471-79854-5|pages=1|url=http://books.google.gr/books?id=uLU9k-mKvzoC&pg=PA1#v=onepage&q&f=false}}</ref><ref>{{cite book|last=editors|first=Toufik Taibi,|title=Design pattern formalization tehcniques|year=2007|publisher=IGI Pub.|location=Hershey, PA|isbn=978-1-59904-219-0|pages=7|url=http://books.google.gr/books?id=lQH6Ejk9OwUC&pg=PT7#v=onepage&q&f=false}}</ref>
 
== Πρότυπα ==
Γραμμή 8:
 
=== Κατασκευαστικά πρότυπα ===
Τα κατασκευαστικά πρότυπα αφορούν τυποποιημένους τρόπους δυναμικής κατασκευής [[αντικειμενοστρεφής προγραμματισμός#Έννοιες|αντικειμένων]] κατά τον [[χρόνος εκτέλεσης|χρόνο εκτέλεσης]]. Απώτερος στόχος τους είναι η ανεξαρτητοποίηση του κώδικα που χρησιμοποιεί κάποια αντικείμενα από τις [[αντικειμενοστρεφής προγραμματισμός#Έννοιες|κλάσεις]] που ορίζουν τα αντικείμενα αυτά και τον τρόπο που κατασκευάζονται στη [[Μνήμη υπολογιστή|μνήμη]], σύμφωνα με την [[αντικειμενοστρεφής προγραμματισμός#Αρχές αντικειμενοστρεφούς σχεδίασης|αρχή ανοιχτότητας-κλειστότητας]] για ορθή αντικειμενοστρεφήαντικειμενοστραφή σχεδίαση. Ακολουθούν τα σπουδαιότερα κατασκευαστικά πρότυπα:
 
==== Factory ====
Γραμμή 476:
 
==== Facade ====
Σε περίπτωση που, για την εκτέλεση μίας εργασίας, διαθέσιμο είναι ένα περίπλοκο σύνολο αλληλεπιδρώντων κλάσεων (έστω σύνολο Α) οι οποίες συνδυάζονται με διάφορους τρόπους, τότε ο προγραμματιστής μπορεί να αποκρύψει αυτόν τον ιστό αλληλεπιδράσεων "καλύπτοντας" τις επίμαχες μονάδες λογισμικού με μία κλάση η οποία εξάγει μία απλή και εύχρηστη διασύνδεση, ένα σύνολο κατάλληλων δημοσίων μεθόδων το οποίο χρησιμοποιεί εσωτερικά το σύνολο Α. Η διασύνδεση αυτή μπορεί ακολούθως να αξιοποιηθεί για την παραγωγή νέου κώδικα χωρίς ανάγκη άμεσης καταφυγής στις περίπλοκες κλάσεις του Α, αποτελεί δηλαδή μία "βιτρίνα" υψηλού επιπέδου. Ένα μη αντικειμενοστρεφέςαντικειμενοστραφές παράδειγμα εφαρμογής του προτύπου Facade είναι ορισμένες συναρτήσεις της [[C πρότυπη βιβλιοθήκη|πρότυπης βιβλιοθήκης της C]] οι οποίες αποτελούν απλουστευμένες εκδοχές αντίστοιχων [[κλήση συστήματος|κλήσεων συστήματος]] του Unix (π.χ. η συνάρτηση ''fopen'' επικαλύπτει την κλήση ''open'').
 
==== Proxy ====