..


Σύνδεσμοι διαφημιζόμενων

ΔΟΕ και DI (αντιστροφή του ελέγχου και την εξάρτηση Injection)

Αντιστροφή «S Ελέγχου (ΔΟΕ) είναι ένα τυπικό χαρακτηριστικό του πλαισίου, το οποίο κινείται ο έλεγχος της ροής από την αίτηση για το ίδιο το πλαίσιο.

Ας πάρουμε ένα παράδειγμα για να αποσαφηνιστεί η έννοια: αν δημιουργήσετε ένα GUI API μέσω του swing , ο προγραμματιστής χρειάζεται μόνο για την εφαρμογή των χειριστές των γεγονότων που προκαλούνται από το χρήστη, όπως το πάτημα ενός κουμπιού ή την εισαγωγή κειμένου. Πλαίσιο έχει απομείνει για τον έλεγχο της ροής εφαρμογή, όπως το κλείσιμο και το άνοιγμα των παραθύρων.

Αυτό το είδος συμπεριφοράς λέγεται ΔΟΕ, επειδή ο έλεγχος μεταφέρεται την επέκταση του πλαισίου.

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






 it.mrwebmaster πακέτο?









 εισαγωγή java.util.ArrayList?







 java.util.List εισαγωγή?









 {Δημόσια τάξη VideoManager





  



 Ιδιωτικός dvdService DvdService?





  



 δημόσια VideoManager () {



    



 super ()?



    



 / **



     



 * Ανάλυση Διαμόρφωση και εξάρτηση



     



 * /



    



 this.dvdService DvdServiceImpl = νέα ()?



  



 }





  



 <Dvd> GetAvalaibleDvdList δημόσια λίστα () {



    



 / **



     



 * Ανάκτηση του καταλόγου των DVD



     



 * /



    



 Λίστα <Dvd> dvdList dvdService.getDvdList = ()?





    



 / **



     



 * Βρόχος μέσω του καταλόγου των DVD για να βρουν

 

     



 * Οι διαθέσιμες



     



 * /



    



 Λίστα = νέα ArrayList <Dvd> availabeDvdList <Dvd> ()?





    



 για (DVD DVD: dvdList) {



      



 αν (dvd.isDisponibile ()) {



        



 availabeDvdList.add (DVD)?



      



 }



    



 }





    



 επιστροφή availabeDvdList?



  



 }

	





 }



Σε αυτό το παράδειγμα το VideoManager τάξη έχει το καθήκον της ανάκτησης της λίστας των μη ενοικιαζόμενες DVD. Ο κατάλογος είναι ανακτηθεί χρησιμοποιώντας μια υπηρεσία (DvdService) που ανακτά μια λίστα με όλα τα DVD, και ποδηλασία στον κατάλογο είναι το DVD διαθέσιμα. Η VideoManager τάξη, ως εκ τούτου, έχει μια εξάρτηση από την DvdService αντικείμενο, το οποίο έχει επιλυθεί στον constructor.

Diagramma Dipendenze

Αν δεν είχε χρησιμοποιήσει την άνοιξη θα πρέπει να έχετε να ανησυχείτε για την επίλυση του VideoManager dipendeza στον κατασκευαστή της κλάσης, δεδομένου ότι η εξάρτηση θα πρέπει να επιλυθούν μέχρι την άνοιξη.
Την άνοιξη, τότε, η ΔΟΕ χρησιμοποιείται για να αντιστραφεί η έλεγχο της διαμόρφωσης των εξαρτήσεων. Για το λόγο αυτό επινοήθηκε από τον Martin Fowler, στο διάσημο του άρθρο , ο όρος εξάρτησης, Injection (DI), το οποίο μερικές φορές χρησιμοποιείται λανθασμένα ως συνώνυμο ΔΟΕ id.
Η βασική ιδέα της DI είναι να έχουμε ένα ξεχωριστό αντικείμενο για να κάνει το ψήφισμα εξάρτησης και αρχικοποίηση.

Η ακόλουθη κατηγορία assembler, έχει το καθήκον να προετοιμάσει την DvdService κατηγορία:

Diagramma Assembler

Υπάρχουν τρεις τύποι εξάρτησης, έγχυσης:

  • Ένεση Interface
  • Ένεση Σέττερ
  • Ένεση Constructor
Την άνοιξη, όπως θα δούμε αργότερα, εφαρμόζονται μόνο Κατασκευαστής και Injection Σέττερ, αλλά είναι επίσης δυνατό να προετοιμαστεί και να δημιουργήσει αντικείμενα μέσα στο εργοστάσιο Αντικείμενο και Μέθοδος Εργοστάσιο.

Άνοιξη Java Οδηγός
E-Learning
Linux (Μάθημα) Linux (Μάθημα)
Πλήρης οδηγός για την open-source σύστημα. Από 49 €.
PHP (Μάθημα) PHP (Μάθημα)
Η πλήρης σειρά μαθημάτων για τη δημιουργία δυναμικών ιστοσελίδων. Από 49 €.
Ruby και Ruby on Rails (Μάθημα) Ruby και Ruby on Rails (Μάθημα)
Δημιουργία λογισμικού και Web εφαρμογές με Ρουμπίνι και RoR. Από 39 €.
Σύνδεσμοι διαφημιζόμενων