모듈식 이벤트 핸들링 시스템은 유지보수 및 확장 가능한 JavaFX 애플리케이션을 만들기에 필수적입니다. 미디어터 패턴은 구성 요소와 유선 통신을 분리하는 효과적인 방법을 제공합니다. 이 문서는 JavaFX의 Mediator 패턴을 사용하여 모듈식 이벤트 핸들링 시스템을 구현하는 방법을 탐구합니다.

Mediator 패턴 이해

Mediator 패턴은 각 다른 사람들과 직접 소통하는 중앙 미디어 스터를 통해 구성 요소를 전달함으로써 느슨한 커플링을 촉진하는 행동 디자인 패턴입니다. JavaFX에서이 패턴은 UI 구성 요소간에 복잡한 상호 작용을 관리하고 확장하는 코드를 쉽게 만들 수 있습니다.

Mediator 인터페이스 설계

구성 요소 및 처리 이벤트를 등록하는 방법을 선언하는 미디어 토르 인터페이스를 정의하여 시작하십시오. 이 인터페이스는 미디어 토르의 행동에 대한 계약 역할을합니다.

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

Mediator 구현

콘크리트 미디어tor는 등록 된 구성 요소 및 좌표 이벤트 처리를 관리합니다. 그것은 구성 요소의지도를 유지하고 다양한 이벤트에 응답하는 방법을 정의합니다.

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의 구성 요소 및 미디어tor 통합

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 애플리케이션의 구성 상호 작용을 단순화하는 모듈식 확장 이벤트 처리 시스템을 만듭니다.