Κοινή χρήση τεχνολογίας

Παραδείγματα υλοποίησης σεναρίου χρήσης προτύπων σχεδίασης και πλεονεκτήματα και μειονεκτήματα (δομικό μοτίβο - μοτίβο διακομιστή μεσολάβησης, μοτίβο εμφάνισης)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

δομικό μοτίβο

Μοτίβο διακομιστή μεσολάβησης

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

Εφαρμόσιμη σκηνή

  1. απομακρυσμένος πράκτορας

    • Παρέχει τοπική αναπαράσταση ενός αντικειμένου σε διαφορετικούς χώρους διευθύνσεων.
  2. εικονικός πράκτορας

    • Δημιουργήστε ακριβά αντικείμενα όπως χρειάζεται.
  3. παράγοντα προστασίας

    • Ελέγξτε την πρόσβαση στο αρχικό αντικείμενο.
  4. Έξυπνη καθοδήγηση

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

Παράδειγμα υλοποίησης (Java)

Το παρακάτω είναι ένα απλό παράδειγμα υλοποίησης του μοτίβου διακομιστή μεσολάβησης, που δείχνει πώς να ελέγχετε την πρόσβαση σε ένα πραγματικό αντικείμενο μέσω ενός αντικειμένου διακομιστή μεσολάβησης.

1. Καθορίστε τη διεπαφή θέματος
public interface Subject {
    void request();
}
  • 1
  • 2
  • 3
  • εικονογραφώSubject Η διεπαφή ορίζει αrequest Μέθοδος, αυτή είναι η μέθοδος που πρέπει να εφαρμόσουν τόσο το πραγματικό αντικείμενο όσο και το αντικείμενο μεσολάβησης.
2. Ορίστε την πραγματική κλάση θέματος (RealSubject)
public class RealSubject implements Subject {
    public void request() {
        System.out.println("RealSubject: Handling request.");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • εικονογραφώRealSubject τάξη υλοποιήθηκεSubject Διεπαφήrequest Μέθοδος, που αντιπροσωπεύει την κλάση που χειρίζεται πραγματικά το αίτημα.
3. Ορισμός κλάσης διακομιστή μεσολάβησης (Proxy)
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.");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • εικονογραφώ
    • Proxy τάξη υλοποιήθηκεSubject διεπαφή και κρατά αRealSubject αντικείμενο.
    • υπάρχει request Στη μέθοδο, η κλάση διακομιστή μεσολάβησης ελέγχει πρώτα τα δικαιώματα πρόσβασης και στη συνέχεια καλεί τα δικαιώματα του πραγματικού αντικειμένουrequest μέθοδο και τέλος καταγράψτε το αρχείο καταγραφής αιτημάτων.
4. Κωδικός πελάτη
public class Client {
    public static void main(String[] args) {
        RealSubject realSubject = new RealSubject();
        Proxy proxy = new Proxy(realSubject);
        
        proxy.request();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • εικονογραφώ
    • Client τάξη που δημιουργήθηκεRealSubject καιProxy αντικείμενο, μέσωProxy Κλήση αντικειμένουrequest μέθοδος ελέγχου τουRealSubject Πρόσβαση.

πλεονέκτημα

  1. Απομόνωση

    • Η λειτουργία διακομιστή μεσολάβησης μπορεί να χρησιμεύσει ως ενδιάμεσος μεταξύ του καλούντος και του πραγματικού αντικειμένου, μειώνοντας τη σύζευξη μεταξύ των στοιχείων του συστήματος και ενισχύοντας την απομόνωση μεταξύ των αντικειμένων.
  2. ασφάλεια

    • Η πρόσβαση σε πραγματικά αντικείμενα μπορεί να ελεγχθεί μέσω διακομιστή μεσολάβησης, επιτρέποντας ελέγχους ασφαλείας και εις βάθος επαλήθευση.
  3. Επεκτασιμότητα

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

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

έλλειψη

  1. πολυπλοκότητα κώδικα

    • Η εισαγωγή πρακτόρων σημαίνει επίσης αύξηση της πολυπλοκότητας του συστήματος, πιθανώς εισαγωγή νέων κλάσεων και διεπαφών και αύξηση του κόστους κατανόησης κώδικα και συντήρησης.
  2. Χρόνος απόκρισης

    • Η λειτουργία διακομιστή μεσολάβησης μπορεί να κάνει το σύστημα να λειτουργεί πιο αργά, ειδικά εάν προστεθεί πολλή λογική επεξεργασίας στη λειτουργία του διακομιστή μεσολάβησης.
  3. Δυσκολία σχεδιασμού

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

Διάγραμμα τάξης

Client
  |
  v
Subject <---- Proxy <---- RealSubject
  • 1
  • 2
  • 3
  • 4

Συνοψίζω

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

Μοτίβο πρόσοψης

Το μοτίβο πρόσοψης είναι ένα δομικό μοτίβο σχεδιασμού που καθιστά πιο εύχρηστα σύνθετα υποσυστήματα παρέχοντας μια ενοποιημένη διεπαφή για την πρόσβαση σε μια ομάδα διεπαφών στο υποσύστημα. Το μοτίβο πρόσοψης ορίζει μια διεπαφή υψηλού επιπέδου που κάνει αυτό το υποσύστημα πιο εύκολο στη χρήση.

Εφαρμόσιμη σκηνή

  1. Απλοποίηση διεπαφών σε πολύπλοκα συστήματα

    • Παρέχετε μια απλή διεπαφή για πολύπλοκα υποσυστήματα για να μειώσετε την πολυπλοκότητα των εξωτερικών αλληλεπιδράσεων με τα υποσυστήματα.
  2. Ιεραρχία

    • Σε μια δομή συστήματος πολλαπλών επιπέδων, τα μοτίβα εμφάνισης μπορούν να χρησιμοποιηθούν για να ορίσουν την είσοδο σε κάθε στρώμα και να απλοποιήσουν τις εξαρτήσεις μεταξύ των επιπέδων.
  3. Αποσυνδεδεμένο σύστημα

    • Με την εισαγωγή του μοτίβου εμφάνισης, μειώνεται η σύζευξη μεταξύ του υποσυστήματος και του πελάτη.

Παράδειγμα υλοποίησης (Java)

Το παρακάτω είναι ένα απλό παράδειγμα υλοποίησης του μοτίβου Πρόσοψης, που δείχνει πώς να απλοποιήσετε τη χρήση υποσυστημάτων μέσω κλάσεων πρόσοψης.

1. Ορίστε κλάσεις υποσυστήματος
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");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
2. Ορίστε την κατηγορία εμφάνισης
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();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
3. Κωδικός πελάτη
public class Client {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.operation1();
        facade.operation2();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Σημειώσεις

  1. Κατηγορία υποσυστήματος

    • SubsystemA, SubsystemB, και SubsystemC Είναι η συγκεκριμένη κλάση υλοποίησης του υποσυστήματος και κάθε κλάση έχει τη δική της μοναδική μέθοδο λειτουργίας.
  2. Κατηγορία εμφάνισης

    • Facade Οι κλάσεις κρατούν αντικείμενα υποσυστήματος και παρέχουν απλοποιημένες διεπαφέςoperation1 καιoperation2 για να καλέσετε συναρτήσεις υποσυστήματος.
  3. κωδικό πελάτη

    • Client η τάξη πέρασεFacade τάξη για να καλέσετεoperation1 καιoperation2, απλοποιώντας έτσι τη χρήση πολύπλοκων υποσυστημάτων.

πλεονέκτημα

  1. Απλοποιημένη διεπαφή

    • Το μοτίβο εμφάνισης παρέχει μια απλή διεπαφή για υποσυστήματα, μειώνοντας την πολυπλοκότητα της αλληλεπίδρασης με τα υποσυστήματα.
  2. χαλαρή σύζευξη

    • Το μοτίβο εμφάνισης μειώνει τη σύζευξη μεταξύ του υποσυστήματος και του πελάτη, γεγονός που συμβάλλει στη βελτίωση της δυνατότητας συντήρησης και της επεκτασιμότητας του συστήματος.
  3. καλύτερη στρώση

    • Τα μοτίβα εμφάνισης βοηθούν στη δημιουργία μιας ξεκάθαρης ιεραρχικής δομής, καθορίζοντας την είσοδο σε κάθε επίπεδο.

έλλειψη

  1. Δεν συμμορφώνεται με την αρχή του ανοιχτού κλεισίματος

    • Κατά την προσθήκη νέων συναρτήσεων υποσυστήματος, μπορεί να χρειαστεί να τροποποιήσετε την κλάση εμφάνισης, η οποία παραβιάζει την αρχή ανοιχτού-κλειστού (ανοιχτό για επεκτάσεις, κλειστό για τροποποιήσεις).
  2. Μπορεί να προκαλέσει προβλήματα απόδοσης

    • Σε ορισμένες περιπτώσεις, η χρήση του μοτίβου πρόσοψης μπορεί να προκαλέσει υποβάθμιση της απόδοσης του συστήματος επειδή όλα τα αιτήματα πρέπει να περάσουν από την κλάση πρόσοψης.

Διάγραμμα τάξης

Client
  |
  v
Facade ----> SubsystemA
          ----> SubsystemB
          ----> SubsystemC
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Συνοψίζω

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