User Tools

Site Tools


oop:composite_pattern

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
oop:composite_pattern [2026/05/25 08:06] – [Παράδειγμα Composite Pattern - Ιεραρχικό Σύστημα Αρχείων] gthanosoop:composite_pattern [2026/05/25 09:12] (current) – [Πλεονεκτήματα του Composite Pattern] gthanos
Line 109: Line 109:
 } }
 </code> </code>
 +
 +===== Πλεονεκτήματα του Composite Pattern =====
 +
 +  * **Πολυμορφισμός & Ευκολία:** Μπορείς να χρησιμοποιήσεις τον πολυμορφισμό για να εκτελέσεις με ενιαίο τρόπο λειτουργίες σε όλο το δέντρο των αντικειμένων χωρίς να διαφέρει αν βρίσκεσαι σε αρχείο ή φάκελο.
 +  * **Επεκτασιμότητα (Open/Closed Principle):** Μπορείς να προσθέσεις νέους τύπους "Φύλλων" ή "Σύνθετων" αντικειμένων που υπακούουν στο δεδομένο //interface//, χωρίς να χαλάσεις τον υπάρχοντα κώδικα του client. Στο παραπάνω παράδειγμα, θα μπορούσαμε να προσθέσουμε μία επιπλέον κλάση που να περιγράφει //symbolink links// (συμβολικούς συνδέσμους) μέσα στο //filesystem//, δηλαδή διασυνδέσεις προς άλλα αρχεία ή φακέλους που όμως εμφανίζονται σαν να υπάρχουν στο σημείο του //filesystem// που περιέχεται ο σύνδεσμος.
 +
 +<code java SymbolicLink.java>
 +// Leaf class representing a Symbolic Link (Συμβολικός Σύνδεσμος)
 +public class SymbolicLink implements FileSystemComponent {
 +    // Κρατάμε αναφορά στο αντικείμενο-στόχο (target) που δείχνει το symlink
 +    private FileSystemComponent target; 
 +
 +    public SymbolicLink(FileSystemComponent target) {
 +        this.target = target;
 +    }
 +
 +    @Override
 +    public void showDetails(String indent) {
 +        if (target != null) {
 +            target.showDetails(indent);
 +        } else {
 +            System.out.println("Broken Link!");
 +        }
 +    }
 +}
 +</code>
 +
 +
 +
 +
  
  
  
  
oop/composite_pattern.1779696416.txt.gz · Last modified: 2026/05/25 08:06 by gthanos