Junior — Middle
Μπορείτε να εξηγήσετε την έννοια του μοτίβου State και πώς χρησιμοποιείται στον αντικειμενοστραφή προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Το πρότυπο State επιτρέπει σε ένα αντικείμενο να αλλάζει τη συμπεριφορά του ανάλογα με την εσωτερική του κατάσταση, αλλάζοντας την κλάση κατάστασης κατά την εκτέλεση. Αυτό βοηθά στην αποφυγή μεγάλων διατάξεων συνθήκης και καθιστά τον κώδικα πιο ευέλικτο και επεκτάσιμο.
Στον αντικειμενοστραφή προγραμματισμό, για την υλοποίηση του προτύπου State δημιουργείται μια βασική διεπαφή κατάστασης και αρκετές συγκεκριμένες κλάσεις καταστάσεων. Το πλαίσιο (το κύριο αντικείμενο) διατηρεί μια αναφορά στην τρέχουσα κατάσταση και αναθέτει κλήσεις σε αυτή.
Παράδειγμα σε Java:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Η κατάσταση A χειρίζεται το αίτημα.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Η κατάσταση B χειρίζεται το αίτημα.");
context.setState(new ConcreteStateA());
}
}
class Context {
private State state;
public Context(State state) {
this.state = state;
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle(this);
}
}
// Χρήση:
Context context = new Context(new ConcreteStateA());
context.request(); // Η κατάσταση A χειρίζεται το αίτημα.
context.request(); // Η κατάσταση B χειρίζεται το αίτημα.
Έτσι, η συμπεριφορά του αντικειμένου αλλάζει δυναμικά κατά την αλλαγή της κατάστασης.