Системи управління та автоматика
Розробка модульної системи обробки подій з медіатором у Javafx
Table of Contents
Розробка модульної системи обробки подій є важливим для створення безпечних і масштабованих додатків JavaFX. Патерн Mediator пропонує ефективний спосіб декупувати компоненти і потокового зв'язку між ними. У статті досліджується, як реалізувати модульну систему обробки подій за допомогою патерна Mediator у JavaFX.
Розуміння шаблону медіатора
Патерн медіатор – це поведінковий шаблон дизайну, який сприяє розхитому співупинці, забезпечуючи, що компоненти спілкуються через центральний медіатор, а не безпосередньо з кожним іншим. У 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
УІ компоненти, такі як кнопки або слайдери повинні спілкуватися з медіатором замість одного з одним. Кожен компонент повідомляє медіатора при виникненні події.
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);
}
}
За допомогою шаблону Mediator ви можете створити модульну, масштабовану систему обробки подій, яка спрощує взаємодію компонентів у додатках JavaFX.