در این قسمت تیم کدگیت را با آموزش Mediator پترن در جاوا همراهی کنید. در ابتدای آموزش به مرور Behavioral Design Pattern پرداخته و در ادامه Mediator پترن را توضیح میدهیم. در انتها یک مثال از Mediator پیاده سازی میکنیم. پیشنیازهای این جلسه شامل موارد زیر میباشد:
Behavioral Design Pattern
یکی از زیر شاخههای دیزاین پترن Behavioral Design Pattern میباشد. یکی از وظایف اصلی این دیزاین پترن، تعامل اشیا و جداسازی وظایف آنها با یکدیگر است. تعریف کامل Behavioral Design Pattern بدین صورت است که، تمامی اشیا با یکدیگر به راحتی بتوانند ارتباط برقرار کرده، بدون آنکه باعث وابستگی بین آنها شود.
Mediator پترن در جاوا
Mediator پترن در جاوا برای کاهش پیچیدگی ارتباط بین کلاسها و اشیا استفاده میشود. در این پترن کلاسی به عنوان Mediator قرار گرفته و تمام ارتباطات بین کلاسها و اشیا مختلف را کنترل میکند. یکی از مزایای این پترن کاهش وابستگی (Coupling) در ماژولهای مختلف برنامه است.
برج مراقبت فرودگاه مثالی از پترن Mediator است. برج مراقبت تمامی هواپیماهایی که پرواز میکنند و یا فرود میآیند را کنترل میکند.به جای ارتباط هواپیما – هواپیما، تمامی ارتباطها بین هواپیما و برج مراقبت است. متمرکز کردن ارتباطات کار پترن Mediator میباشد.
مثال Mediator پترن در جاوا
برای نشان دادن Mediator پترن در جاوا ما از Chat Room استفاده میکنیم. در چت روم تمامی کاربران میتوانند به یکدیگر پیغام دهند و مسئولیت کنترل نمایش پیغامها را کلاس ChatRoom (این کلاس نقش Mediatorرا دارد) بر عهده دارد. کلاس User نیز کاربران چت ما هستند. کد زیر نشاندهنده این مثال است:
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String name) {
this.name = name;
}
public void sendMessage(String message) {
ChatRoom.showMessage(this, message);
}
}
public class ChatRoom {
public static void showMessage(User user, String message) {
System.out.println(new Date().toString() + " [" + user.getName()
+ "] : " + message);
}
}
همانطور که در کد بالا میبینید در کلاس ChatRoom متدی static برای نمایش پیغامهای کاربران در نظر گرفته شده است و در کلاس User متدی به نام SendMessage قرار دارد که وظیفه ارسال یک پیغام را بر عهده دارد. برای اجرای برنامه نیز میتوانید Main زیر را استفاده کنید:
public static void main(String[] args) {
User robert = new User("Robert");
User john = new User("John");
robert.sendMessage("Hi! John!");
john.sendMessage("Hello! Robert!");
}
دیاگرام کد بالا به صورت تصویر زیر است: