نظم الرقابة والتألق
تصميم نظام معالجة الأحداث النموذجية مع الوسيط باترن في جافكس
Table of Contents
ويعد تصميم نظام مناولة الأحداث النموذجية أمرا أساسيا لإيجاد تطبيقات قابلة للاستمرار والتصعيد، ويتيح نمط الوسيط وسيلة فعالة لفك الارتباط بين العناصر وتبسيط الاتصال بينها، وتستكشف هذه المادة كيفية تنفيذ نظام مناولة الأحداث النموذجية باستخدام نمط الوسيط في جافا فاكس.
فهم الوسيط باترن
نمط الوسيط هو نمط تصميم سلوكي يشجع على الانقلاب السائب من خلال ضمان أن تتواصل العناصر عبر وسيط مركزي بدلا من التواصل مباشرة مع بعضها البعض، وفي جافا فاكس، يساعد هذا النمط على إدارة التفاعلات المعقدة بين عناصر وحدة التفتيش المشتركة، مما يجعل من السهل الحفاظ على المدونة وتوسيعها.
تصميم الوسيط
بدايةً من تحديد واجهة وسيطة تُعلن طرق تسجيل المكونات و التعامل مع الأحداث، هذه الوصلة تعمل كعقد لسلوك الوسيط
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);
}
}
}
إنشاء عناصر موحدة
وينبغي أن تتصل عناصر الوحدويات مثل الأزرار أو الشرائح بالوسيط بدلاً من الاتصال المباشر ببعضها البعض، ويخطر كل عنصر الوسيط عند حدوث حدث.
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);
}
}
إدماج العناصر والوسيط في جافا فاكس
في تطبيقك لـ (جافا فاكس) ، تسارع إلى الوسيط والعناصر ، وسجل المكونات مع الوسيط ، وضبط مشغلين للحدث ليصدروا إخطارات الوسطاء
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);
}
}
من خلال اتباع هذا النهج، تخلق نظاماً مناولة الأحداث قابلاً للتكرار، يبسط التفاعلات المكوّنة في تطبيقات (جافا فاكس) باستخدام نمط الوسيط.