علی قدرتی
علی قدرتی
خواندن ۱ دقیقه·۳ سال پیش

Indirection

  • الگوی Indirection از Low Coupling پشتیبانی می کند و با انتساب مسئولیت میانجیگری بین دو عنصر به یک شی میانی، از پتانسیل مجدد بین دو عنصر استفاده می کند. نمونه ای از این، معرفی یک جزء کنترل کننده برای میانجیگری بین داده ها (model) و نمایش آن (view) در الگوی MVC است. این تضمین می کند که coupling بین آنها کم باقی می ماند.


  • مشکل: برای جلوگیری از جفت شدن مستقیم بین دو (یا چند) چیز، کجا مسئولیت را تعیین کنیم؟ چگونه اجسام را جدا کنیم تا Low Coupling پشتیبانی شود و پتانسیل استفاده مجدد بیشتر باقی بماند؟

راه حل: مسئولیت را به یک شی میانی بسپارید تا بین سایر مؤلفه ها یا سرویس ها واسطه شود تا مستقیماً جفت نشوند.

واسطه بین اجزای دیگر یک جهت غیر مستقیم ایجاد می کند.

همانطور که می بینید، در این مورد، مؤلفه Employee باید تماس بگیرد و در مورد مؤلفه Project بداند تا بتواند اطلاعات مربوط به کارکنان رزرو شده را به روز کند. علاوه بر این، بین هزینه‌های پروژه و مشتری پیوند دیگری وجود خواهد داشت. ما می خواهیم این سه جزء مستقل باشند، بنابراین این راه حل برای ما خوب نیست.

پس چه چیزی نیاز داریم؟ مولفه جدیدی که به نوعی ارکستراتور برای دیگران خواهد بود. ترتیب عملیات را تعیین خواهد کرد. برای معرفی آن می توانیم از برخی از این الگوهای طراحی استفاده کنیم:

  • bridge
  • facade
  • adapter
  • mediator

چرا؟ زیرا ما به یک شی نیاز داریم که مسئولیت ارتباط بین همه ماژول ها را بر عهده بگیرد. به این ترتیب اجزا هیچ چیز در مورد یکدیگر نمی دانند. علاوه بر این، برای فهمیدن اینکه کدام مؤلفه به کدام یک نگاه می کند، مشکلی وجود نخواهد داشت، زیرا هیچ کدام به هیچ کدام نگاه نمی کنند.

در اینجا یک نتیجه از معرفی واسطه به کد ما آمده است:


برای مطالعه ی ادامه مطالب به لینک مراجعه کنید.


graspgrasp principlessoftware engineeringIndirectionIndirection principle
شاید از این پست‌ها خوشتان بیاید