Middle
Ποια πρότυπα σχεδίασης, εκτός από το Singleton, έχετε χρησιμοποιήσει;
sobes.tech AI
Απάντηση από AI
- Μέθοδος Εργοστασίου. Χρησιμοποιείται για τη δημιουργία αντικειμένων χωρίς να καθορίζεται ρητά ο συγκεκριμένος τύπος κλάσης. Είναι χρήσιμη όταν η λογική δημιουργίας αντικειμένου εξαρτάται από τις υποκλάσεις.
- Αφηρημένο Εργοστάσιο. Χρησιμοποιείται για τη δημιουργία οικογενειών σχετικών ή εξαρτώμενων αντικειμένων, παρέχοντας ένα διεπαφή για αυτό, αλλά χωρίς να καθορίζει συγκεκριμένες κλάσεις.
- Builder. Χρησιμοποιείται για την βήμα προς βήμα δημιουργία σύνθετων αντικειμένων, όπου η σειρά και ο συνδυασμός των βημάτων μπορεί να διαφέρει. Αποφεύγει τον "τηλεσκοπικό κατασκευαστή".
- Παρατηρητής (Observer). Υλοποιείται για τη δημιουργία εξαρτήσεων "ένα προς πολλά" μεταξύ αντικειμένων, όπου μια αλλαγή στην κατάσταση ενός αντικειμένου ειδοποιεί αυτόματα όλα τα εξαρτώμενα αντικείμενα.
- Στρατηγική (Strategy). Εφαρμόζεται για τον ορισμό μιας οικογένειας αλγορίθμων, την ενσωμάτωση καθενός και την εξασφάλιση της εναλλαξιμότητάς τους. Επιτρέπει την επιλογή του αλγορίθμου κατά την εκτέλεση.
- Διακοσμητής (Decorator). Χρησιμοποιείται για την δυναμική προσθήκη νέων ευθυνών σε αντικείμενα χωρίς να αλλάζει η δομή τους.
- Προξενιό (Proxy). Χρησιμοποιείται σε περιπτώσεις όπου χρειάζεται να ελέγχεται η πρόσβαση σε ένα αντικείμενο, π.χ. για lazy φόρτωση ή απομακρυσμένη πρόσβαση.
- Μέθοδος Προτύπου (Template Method). Χρησιμοποιείται για τον ορισμό του σκελετού ενός αλγορίθμου στην υπερκλάση, επιτρέποντας στις υποκλάσεις να υπερκαλύπτουν ορισμένα βήματα του αλγορίθμου χωρίς να αλλάζουν τη βασική δομή.
- Προσαρμογέας (Adapter). Χρησιμοποιείται για τη μετατροπή της διεπαφής μιας κλάσης στη διεπαφή που αναμένουν οι πελάτες. Επιτρέπει σε κλάσεις με ασυμβίβαστες διεπαφές να συνεργάζονται.
- Εντολή (Command). Χρησιμοποιείται για την ενσωμάτωση ενός αιτήματος ως αντικείμενο, επιτρέποντας την παραμετροποίηση πελατών με διαφορετικά αιτήματα, την τοποθέτηση αιτημάτων σε ουρά ή την τήρηση αρχείου ενεργειών, καθώς και την υποστήριξη ακύρωσης ενεργειών.
Παράδειγμα υλοποίησης της Factory Method:
// Διεπαφή προϊόντος
interface Product {
void doSomething();
}
// Συγκεκριμένα προϊόντα
class ConcreteProductA implements Product {
@Override
public void doSomething() {
System.out.println("Κάνει κάτι στο Product A");
}
}
class ConcreteProductB implements Product {
@Override
public void doSomething() {
System.out.println("Κάνει κάτι στο Product B");
}
}
// Διεπαφή κατασκευαστή
abstract class Creator {
public abstract Product factoryMethod();
public void someOperation() {
Product product = factoryMethod();
product.doSomething();
}
}
// Συγκεκριμένοι κατασκευαστές
class ConcreteCreatorA extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductA();
}
}
class ConcreteCreatorB extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductB();
}
}