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

Κατανόηση του Μοτίβου του Μεσίτη

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

Σχεδιασμός της διεπαφής διαμεσολαβητή

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

public interface EventMediator {
 void registerComponent(String name, UIComponent component);
 void handleEvent(String eventType, String sourceComponent);
}

Εφαρμογή του Μεσίτη

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

public class ConcreteEventMediator implements EventMediator {
 private Map<String, UIComponent> components = new HashMap<>();

 @Override
 public void registerComponent(String name, UIComponent component) {
 components.put(name, component);
 }

 @Override
 public void handleEvent(String eventType, String sourceComponent) {
 // Example: handle button click
 if ("buttonClick".equals(eventType)) {
 UIComponent component = components.get(sourceComponent);
 // Perform actions based on the source component
 System.out.println(sourceComponent + " triggered a " + eventType);
 }
 }
}

Δημιουργία συστατικών UI

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

public interface UIComponent {
 void setMediator(EventMediator mediator);
 void triggerEvent(String eventType);
}

public class ButtonComponent implements UIComponent {
 private EventMediator mediator;
 private String name;

 public ButtonComponent(String name) {
 this.name = name;
 }

 @Override
 public void setMediator(EventMediator mediator) {
 this.mediator = mediator;
 }

 @Override
 public void triggerEvent(String eventType) {
 mediator.handleEvent(eventType, name);
 }
}

Ενσωματώνοντας τα συστατικά και τον διαμεσολαβητή σε JavaFX

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

public class MainApp extends Application {
 @Override
 public void start(Stage primaryStage) {
 ConcreteEventMediator mediator = new ConcreteEventMediator();

 ButtonComponent button1 = new ButtonComponent("Button1");
 ButtonComponent button2 = new ButtonComponent("Button2");

 button1.setMediator(mediator);
 button2.setMediator(mediator);

 mediator.registerComponent("Button1", button1);
 mediator.registerComponent("Button2", button2);

 Button javafxButton1 = new Button("Button 1");
 javafxButton1.setOnAction(e -> button1.triggerEvent("buttonClick"));

 Button javafxButton2 = new Button("Button 2");
 javafxButton2.setOnAction(e -> button2.triggerEvent("buttonClick"));

 VBox vbox = new VBox(10, javafxButton1, javafxButton2);
 Scene scene = new Scene(vbox, 300, 200);
 primaryStage.setScene(scene);
 primaryStage.setTitle("Mediator Pattern in JavaFX");
 primaryStage.show();
 }

 public static void main(String[] args) {
 launch(args);
 }
}

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