Table of Contents
Moduulisen tapahtumakäsittelyjärjestelmän suunnittelu on olennaisen tärkeää ylläpidettävissä ja skaalattavissa olevien JavaFX-sovellusten luomisessa. Mediator-malli tarjoaa tehokkaan tavan irrottaa komponentit ja virtaviivaistaa niiden välistä viestintää. Tässä artikkelissa selvitetään, miten toteuttaa modulaarinen tapahtumakäsittelyjärjestelmä käyttäen JavaFX:n Mediator-mallia.
Välittäjän mallin ymmärtäminen
Välittäjän malli on käyttäytymismalli, joka edistää löysää kytkentää varmistamalla, että komponentit kommunikoivat keskussovittimen kautta eivätkä suoraan toistensa kanssa. JavaFX:ssä tämä kuvio auttaa hallitsemaan monimutkaista vuorovaikutusta käyttöliittymän osien välillä, mikä helpottaa koodin ylläpitoa ja laajentamista.
Välittäjän käyttöliittymän suunnittelu
Aloita määrittelemällä sovittelijan käyttöliittymä, joka ilmoittaa menetelmät osien rekisteröimiseksi ja tapahtumien käsittelemiseksi. Tämä käyttöliittymä toimii sovittelijan käyttäytymisen sopimuksena.
public interface EventMediator {
void registerComponent(String name, UIComponent component);
void handleEvent(String eventType, String sourceComponent);
}
Välittäjän täytäntöönpano
Konkreettisesti toimiva sovittelija hallinnoi rekisteröityjä osia ja koordinoi tapahtumakäsittelyä. Se ylläpitää komponenttien karttaa ja määrittelee, miten erilaisiin tapahtumiin voidaan reagoida.
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);
}
}
}
Käyttöliittymän komponenttien luominen
Käyttöliittymän osien, kuten painikkeiden tai liukusäätimien, olisi oltava yhteydessä sovittelijaan eikä suoraan toisiinsa. Kukin komponentti ilmoittaa sovittelijalle tapahtuman sattuessa.
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);
}
}
Komponenttien ja sovittelijan integrointi JavaFX:ään
JavaFX-sovelluksessasi instantioi sovittelija ja komponentit, rekisteröi osat sovittelijalle ja perusta tapahtumakäsittelijät, jotta sovittelijan ilmoitukset voidaan käynnistää.
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);
}
}
Tätä lähestymistapaa noudattamalla luot modulaarisen, skaalautuvan tapahtumakäsittelyjärjestelmän, joka yksinkertaistaa JavaFX-sovelluksissa komponenttien vuorovaikutusta Mediator-mallin avulla.