الگوی زنجیره مسئولیت

دانشنامه عمومی

در طراحی شی گرا الگوی زنجیره مسئولیت یک الگوی طراحی متشکل از یک منبع از اشیای فرمانده و یک سری از اشیای پردازشی است[ ۱] هر شی پردازشی شامل منطقی است که انواع اشیایی فرمان را می تواند پردازش کند؛ بقیه به شی پردازشی بعدی در زنجیره فرستاده می شوند. یک مکانیزم نیز برای اضافه کردن شی پردازشی جدید به پایان این زنجیره نیز وجود دارد؛ بنابراین زنجیره مسئولیت نسخه شی گرایانه if … else if … else if . . . . . . . else … endif است. به علاوه این مزیت را دارد که می توان آن را در هنگام اجرا تغییرشکل داد.
این الگو ایده همراهی آزادانه را ترویج می دهد.
زنجیره مسئولیت الگوی ساختاری تقریباً یکسان با الگوی آذینگر است با این تفاوت که برای آذینگر همه کلاس ها می توانند یک درخواست را رسیدگی کنند در حالی که در الگوی زنجیره مسئولیت فقط یکی از کلاس ها در زنجیره به درخواست رسیدگی می کند.
الگوی زنجیره مسئولیت اصول SOLID را به خوبی پشتیبانی می کند. این اصول شامل Single Responsibility Principle، Open/Closed Principle و Liskov Substitution Principle می شوند.
اصل SRP می گوید که هر کلاس باید فقط یک مسئولیت را داشته باشد. در الگوی زنجیره مسئولیت، هر گام از زنجیره مسئولیت مسئولیت خاص خود را دارد و فقط آن را انجام می دهد. به این ترتیب، هر کلاس در این طرح فقط مسئولیت خود را بر عهده دارد و تغییر در یک گام از زنجیره تنها به آن گام اثر می گذارد. اصل OCP می گوید که کلاس ها باید برای توسعه باز باشند و باید بتوانند با افزودن کدهای جدید، بدون تغییر در کدهای موجود، تغییر کنند. الگوی زنجیره مسئولیت از این اصل پشتیبانی می کند زیرا با افزودن یک گام جدید به زنجیره، می توان عملکرد سیستم را تغییر داد ولی بدون نیاز به تغییر در کدهای موجود در سایر گام ها. اصل LSP می گوید که باید بتوانیم یک شیء را با یک شیء دیگر جایگزین کنیم بدون این که عملکرد کل سیستم تغییر کند. الگوی زنجیره مسئولیت از این اصل پشتیبانی می کند زیرا هر گام از زنجیره باید قابلیت جایگزینی با گام دیگری را داشته باشد، به شرطی که هر دو گام به یک نوع از درخواست ها پاسخ دهند.
وقتی برای پشتیبانی از یک محصول با call center یا مرکز تماس کارخانه تماس می گیریم، در واقع داریم این الگو را مشاهده می کنیم. ابتدا درخواست ما توسط ماشین مورد ارزیابی قرار می گیرد. سپس اگر مشکل حل نشده بود، به یک پاسخ گوی غیر متخصص متصل می شویم. اگر باز هم مشکل برطرف نشد به یک تکنسین و متخصص متصل می شویم تا به احتمال بیشتری مشکل حل شود.
عکس الگوی زنجیره مسئولیت
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران

بپرس