τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Το μοτίβο διακομιστή μεσολάβησης είναι ένα δομικό μοτίβο σχεδιασμού που ελέγχει την πρόσβαση σε άλλο αντικείμενο εισάγοντας ένα αντικείμενο διακομιστή μεσολάβησης. Αυτό το αντικείμενο διακομιστή μεσολάβησης μπορεί να παρέχει πρόσθετες λειτουργίες στο αντικείμενο μεσολάβησης, όπως έλεγχος πρόσβασης, αργή προετοιμασία, καταγραφή ή πρόσβαση στο δίκτυο.
απομακρυσμένος πράκτορας:
εικονικός πράκτορας:
παράγοντα προστασίας:
Έξυπνη καθοδήγηση:
Το παρακάτω είναι ένα απλό παράδειγμα υλοποίησης του μοτίβου διακομιστή μεσολάβησης, που δείχνει πώς να ελέγχετε την πρόσβαση σε ένα πραγματικό αντικείμενο μέσω ενός αντικειμένου διακομιστή μεσολάβησης.
public interface Subject {
void request();
}
Subject
Η διεπαφή ορίζει αrequest
Μέθοδος, αυτή είναι η μέθοδος που πρέπει να εφαρμόσουν τόσο το πραγματικό αντικείμενο όσο και το αντικείμενο μεσολάβησης.public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
RealSubject
τάξη υλοποιήθηκεSubject
Διεπαφήrequest
Μέθοδος, που αντιπροσωπεύει την κλάση που χειρίζεται πραγματικά το αίτημα.public class Proxy implements Subject {
private RealSubject realSubject;
public Proxy(RealSubject realSubject) {
this.realSubject = realSubject;
}
public void request() {
if (this.checkAccess()) {
this.realSubject.request();
this.logAccess();
}
}
private boolean checkAccess() {
// 检查访问权限
System.out.println("Proxy: Checking access prior to firing a real request.");
return true;
}
private void logAccess() {
// 记录请求日志
System.out.println("Proxy: Logging the time of request.");
}
}
Proxy
τάξη υλοποιήθηκεSubject
διεπαφή και κρατά αRealSubject
αντικείμενο.request
Στη μέθοδο, η κλάση διακομιστή μεσολάβησης ελέγχει πρώτα τα δικαιώματα πρόσβασης και στη συνέχεια καλεί τα δικαιώματα του πραγματικού αντικειμένουrequest
μέθοδο και τέλος καταγράψτε το αρχείο καταγραφής αιτημάτων.public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.request();
}
}
Client
τάξη που δημιουργήθηκεRealSubject
καιProxy
αντικείμενο, μέσωProxy
Κλήση αντικειμένουrequest
μέθοδος ελέγχου τουRealSubject
Πρόσβαση.Απομόνωση:
ασφάλεια:
Επεκτασιμότητα:
Εξυπνος:
πολυπλοκότητα κώδικα:
Χρόνος απόκρισης:
Δυσκολία σχεδιασμού:
Client
|
v
Subject <---- Proxy <---- RealSubject
Το μοτίβο διακομιστή μεσολάβησης παρέχει έναν αποτελεσματικό τρόπο ελέγχου και διαχείρισης της πρόσβασης σε αντικείμενα. Χρησιμοποιώντας διακομιστές μεσολάβησης, μπορείτε να προσθέσετε διάφορες λειτουργίες, διατηρώντας παράλληλα σαφείς τις ευθύνες των επιχειρηματικών αντικειμένων. Αυτή η λειτουργία είναι ιδιαίτερα κατάλληλη για σενάρια που απαιτούν έλεγχο πρόσβασης και άλλες λειτουργίες προεπεξεργασίας σε επιχειρηματικά αντικείμενα.
Το μοτίβο πρόσοψης είναι ένα δομικό μοτίβο σχεδιασμού που καθιστά πιο εύχρηστα σύνθετα υποσυστήματα παρέχοντας μια ενοποιημένη διεπαφή για την πρόσβαση σε μια ομάδα διεπαφών στο υποσύστημα. Το μοτίβο πρόσοψης ορίζει μια διεπαφή υψηλού επιπέδου που κάνει αυτό το υποσύστημα πιο εύκολο στη χρήση.
Απλοποίηση διεπαφών σε πολύπλοκα συστήματα:
Ιεραρχία:
Αποσυνδεδεμένο σύστημα:
Το παρακάτω είναι ένα απλό παράδειγμα υλοποίησης του μοτίβου Πρόσοψης, που δείχνει πώς να απλοποιήσετε τη χρήση υποσυστημάτων μέσω κλάσεων πρόσοψης.
public class SubsystemA {
public void operationA() {
System.out.println("SubsystemA: operationA");
}
}
public class SubsystemB {
public void operationB() {
System.out.println("SubsystemB: operationB");
}
}
public class SubsystemC {
public void operationC() {
System.out.println("SubsystemC: operationC");
}
}
public class Facade {
private SubsystemA subsystemA;
private SubsystemB subsystemB;
private SubsystemC subsystemC;
public Facade() {
this.subsystemA = new SubsystemA();
this.subsystemB = new SubsystemB();
this.subsystemC = new SubsystemC();
}
public void operation1() {
System.out.println("Facade: operation1");
subsystemA.operationA();
subsystemB.operationB();
}
public void operation2() {
System.out.println("Facade: operation2");
subsystemB.operationB();
subsystemC.operationC();
}
}
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.operation1();
facade.operation2();
}
}
Κατηγορία υποσυστήματος:
SubsystemA
, SubsystemB
, και SubsystemC
Είναι η συγκεκριμένη κλάση υλοποίησης του υποσυστήματος και κάθε κλάση έχει τη δική της μοναδική μέθοδο λειτουργίας.Κατηγορία εμφάνισης:
Facade
Οι κλάσεις κρατούν αντικείμενα υποσυστήματος και παρέχουν απλοποιημένες διεπαφέςoperation1
καιoperation2
για να καλέσετε συναρτήσεις υποσυστήματος.κωδικό πελάτη:
Client
η τάξη πέρασεFacade
τάξη για να καλέσετεoperation1
καιoperation2
, απλοποιώντας έτσι τη χρήση πολύπλοκων υποσυστημάτων.Απλοποιημένη διεπαφή:
χαλαρή σύζευξη:
καλύτερη στρώση:
Δεν συμμορφώνεται με την αρχή του ανοιχτού κλεισίματος:
Μπορεί να προκαλέσει προβλήματα απόδοσης:
Client
|
v
Facade ----> SubsystemA
----> SubsystemB
----> SubsystemC
Το μοτίβο Πρόσοψης διευκολύνει την εργασία με πολύπλοκα υποσυστήματα παρέχοντας μια απλοποιημένη διεπαφή. Είναι κατάλληλο για σενάρια όπου είναι απαραίτητη η απλοποίηση της διεπαφής του υποσυστήματος, η μείωση της άμεσης αλληλεπίδρασης μεταξύ του πελάτη και του υποσυστήματος και η αποσύνδεση της ιεραρχίας του συστήματος. Αν και έχει τη δυνατότητα να παραβιάζει την αρχή του ανοιχτού-κλειστού, στις περισσότερες περιπτώσεις τα πλεονεκτήματά του υπερτερούν κατά πολύ των μειονεκτημάτων του, καθιστώντας τον σχεδιασμό του συστήματος πιο σαφή και ευκολότερο στη συντήρηση.