..
Πριν από τη μετακίνηση για να δείτε πώς θα δημιουργήσετε με pointcuts πτυχή και τις συμβουλές τους, είναι πολύ σημαντικό να κατανοήσουμε πώς η πληρεξούσια.
Ο πληρεξούσιος δεν είναι τίποτα περισσότερο από ένα περιτύλιγμα (container) που περιέχει ένα αντικείμενο και να εκθέτει όλα τα δημόσια αντικείμενο medodi.
Όταν γίνεται επίκληση μιας μεθόδου για το πληρεξούσιο με την πραγματική εφαρμογή της μεθόδου που έχει ανατεθεί στους Wrap αντικειμένου, καθιστώντας έτσι την παρουσία της μεσολάβησης εντελώς διαφανής για τον χρήστη.
Ο πληρεξούσιος χρησιμοποιεί άνοιξη AOP για την εφαρμογή από τις απλές μεθόδους αναθέτουν επίσης να ασχοληθεί με διάφορες συμβουλές διαχείρισης.
Καταλαβαίνουμε πώς ένα πληρεξούσιο εφαρμόσουν έναν πολύ απλό. Πρώτα θα δημιουργήσουμε ένα απλό interface:
{Δημόσια διεπαφή SimpleInterface
δημόσια f1 άκυρη ()?
δημόσια άκυρη f2 ()?
}
δημιουργούμε ακόμα και μια απλή εφαρμογή:
SimplePojo {δημόσια τάξη υλοποιεί SimpleInterface
@ Παράκαμψη
δημόσια f1 άκυρη () {
System.out.println ("F1")?
f2 ()?
}
@ Παράκαμψη
δημόσια άκυρη f2 () {
System.out.println ("F2")?
}
}
Σημειώνουμε ότι η μέθοδος f1 () κάνει μια κλήση στο f2 ().
Ας δημιουργήσουμε τώρα το proxy, όπως ήδη είπε ότι πρέπει να δημιουργηθεί ένα δοχείο ενός αντικειμένου και εκθέτουν το σύνολο των μεθόδων της, τότε ο πληρεξούσιος θα εφαρμόσει το περιβάλλον και στη συνέχεια να μεταβιβάσει όλα τα SimpleInterface μέθοδο κλήσεις προς το πραγματικό αντικείμενο:
SimpleProxy {δημόσια τάξη υλοποιεί SimpleInterface
Ιδιωτικός SimpleInterface κατ?
δημόσια SimpleProxy (SimpleInterface εκπρόσωπος) {
super ()?
this.delegate = αναθέσει?
}
@ Παράκαμψη
δημόσια f1 άκυρη () {
System.out.println ("Ανάθεση F1 ()");
delegate.f1 ()?
}
@ Παράκαμψη
δημόσια άκυρη f2 () {
System.out.println ("Ανάθεση F2 ()");
delegate.f2 ()?
}
}
Στο απλό παράδειγμα μας, ο πληρεξούσιος κάνει είναι να τυπώνει ένα μήνυμα που λέει ότι η μεταβίβαση της κλήσης.
Δημιουργούμε τώρα μια κύρια δοκιμασία για να δούμε πώς μεσολάβησης μας:
δημόσια τάξη Κύρια {
δημόσια στατική άκυρη κύρια (String [] args) {
/ / Δημιουργήστε ένα παράδειγμα του φασολιού
SimpleInterface realBean SimplePojo = νέα ()?
System.out.println ("##### φασολιών #####");
realBean.f1 ()?
System.out.println ()?
realBean.f2 ()?
System.out.println ()?
/ / Δημιουργήστε μια εμφάνιση της μεσολάβησης
SimpleInterface SimpleProxy proxy = νέο (νέα SimplePojo ())?
System.out.println ("##### μεσολάβησης #####");
proxy.f1 ()?
System.out.println ()?
proxy.f2 ()?
}
}
Το πρώτο μπλοκ του κώδικα δίνει το ακόλουθο αποτέλεσμα:
##### ##### Φασολιών F1 F2 F2Τώρα θα περίμενε κανείς ότι η παραγωγή του δεύτερου μπλοκ είναι τα ακόλουθα:
##### ##### Μεσολάβησης Ανάθεση F1 () F1 Ανάθεση F2 () F2 Ανάθεση F2 () F2Invce όχι! Το αποτέλεσμα θα είναι ως εξής:
##### ##### Μεσολάβησης Ανάθεση F1 () F1 F2 Ανάθεση F2 () F2Όπως μπορούμε να δούμε την κλήση ότι η μέθοδος f1 () είναι η μέθοδος f2 () δεν διέρχεται μέσω της μεσολάβησης, διότι τη στιγμή που θα έχουν αναθέσει την εκτέλεση της μεθόδου του πραγματικού αντικειμένου όλες οι εσωτερικές κλήσεις δεν θα υποκλαπούν δι 'αντιπροσώπου.

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