خیلی اوقات ما کدهایی شامل اشیایی مینویسیم که با هم در ارتباطند ، اگر این ارتباطات پیچیده و زیاد باشند بعدا سرِ تغییرات یا ... دچار مشکل میشیم ، پس نیاز به یک واسطه داریم که بین دو شئ قرار بگیره ، کلمه Mediate به معنی "میناجی گری کردن" یا "وساطت کردن" و Mediator یعنی "واسطه" ، این الگو جزء Behavioral ها حساب میشه .
همون طور که در شکل میبینیند دو کلاس مشتق شده از Colleague قراره با هم همکاری داشته باشند و Mediator این همکاری رو برقرار میکنه ، در Mediator متدهای مورد نظر و در ConcreteMediator پیادهسازی اونها انجام میشه ، Colleague یک Mediator رو به عنوان ورودی میگیره و دارای متدهای Abstract هست که در ConcreteColleague ها پیادهسازی شدند ، مثالی که اکثرا در مقالات برای Mediator میارن ، مثالِ برجِ مراقبت هست که بین هواپیماها واسطه میشه و به اونها اجازه فرود و پرواز و ... میده .
دو قسمت سخت افزاری در یک سیستم قرار هست به هم پیامی ارسال کنند ، با Mediator این پیادهسازی رو انجام میدیم .
در مرحله اول Mediator و Hardware (یا همون Colleague) رو مینویسیم ، Mediator تابعی به نام send داره که یک پیغام به همراه گیرنده و فرستنده رو ورودی داره ، Hardware یک تابع با نام sendMessage داره که پیاده سازش رو انجام میدیم اما تابع receiveMessage رو به صورت abstract در میآریم که در هر کلاسی که از Hardware مشتق شده فرق کنه (البته در کد ما فرقی نمیکنه)
در مرحله بعدی کلاسهایی که از این دو کلاس مشتق شدن رو پیادهسازی میکنیم ، دو کلاس Ram و Cpu از Hardware مشتق شدهاند :
و در آخر در کدِ Client ازشون استفاده میکنیم :
باقی مقالات در مورد الگویهای طراحی رو در این مقاله بخونید .
من رو در لینکدین و اینستاگرام دنبال کنید ???
اگه دوست داشتید میتونید به صفحه Spotify بنده هم برید و موسیقی های منو گوش بدید ???