مقدمه

پیش از این راجع به Bad Smell و کاربرد آن در مهندسی نرم افزار صحبت کردیم "مرد واسطه" یکی از 22 نوع Bad Smell میباشد.

نحوه تشخیص و معرفی راه حل مرد واسطه
یکی از فواید اصلی اشیا Encapsulation میباشد یعنی جزئیات داخلی را از بقییه اشیا مخفی کنیم Encapsulation معمولا با نوعی همراهی بوجود می آید شما از یک کارگردان میپرسید که برای یک ملاقات وقت آزاد دارد او به دفترسررسید اش رجوع میکند و دفتر سر رسید به شما یک جواب می دهد همه چیز به خوبی انجام میشود. نیازی نیست که بدانید کارگردان دفتر سررسید واقعی دارد یا از نسخه الکترونیکی استفاده میکند یا از یک منشی برای مدیریت کردن قرار ملاقات ها استفاده می کند.
اما با زیاد شدن واسطه ها و پیچ خم ها قضیه به این خوبی باقی نمی ماند. شما به interface یک کلاس نگاه می کنید و میبینید که نصف متد ها با همراهی یک کلاس دیگر در حال انجام است. بعد از چندی نیاز است که با روش حذف مرد واسطه مستقیما از خود شی بپرسیم که اوضاع از چه قرار است! اگر تعداد کمی توابع وجود دارند که کار زیادی نمیکنند از روش توابع درخط استفاده کنید تا آنها را به صدا زننده منتقل کنید. اگر یک رفتار اضافی وجود دارد میتوانید از روش جایگزینی همراهی با وراثت[1] استفاده کنید تا مرد واسطه را به یک زیرکلاس از شی واقعی تبدیل کنید این به شما کمک میکند که قابلیت ها را بدون دنبال کردن تمامی آن همراهی ها تکامل بخشید.
[1] Replace Delegation with Inheritance