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
oop:composite_pattern [2026/05/25 08:59] – [Πλεονεκτήματα του Composite Pattern] gthanosoop:composite_pattern [2026/05/25 09:12] (current) – [Πλεονεκτήματα του Composite Pattern] gthanos
Line 113: Line 113:
  
   * **Πολυμορφισμός & Ευκολία:** Μπορείς να χρησιμοποιήσεις τον πολυμορφισμό για να εκτελέσεις με ενιαίο τρόπο λειτουργίες σε όλο το δέντρο των αντικειμένων χωρίς να διαφέρει αν βρίσκεσαι σε αρχείο ή φάκελο.   * **Πολυμορφισμός & Ευκολία:** Μπορείς να χρησιμοποιήσεις τον πολυμορφισμό για να εκτελέσεις με ενιαίο τρόπο λειτουργίες σε όλο το δέντρο των αντικειμένων χωρίς να διαφέρει αν βρίσκεσαι σε αρχείο ή φάκελο.
-  * **Επεκτασιμότητα (Open/Closed Principle):** Μπορείς να προσθέσεις νέους τύπους "Φύλλων" ή "Σύνθετων" αντικειμένων χωρίς να χαλάσεις τον υπάρχοντα κώδικα του client.+  * **Επεκτασιμότητα (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.txt · Last modified: 2026/05/25 09:12 by gthanos