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

ساخت وبلاگ

Chain of Responsibility Design Patte in Java

در حالی که ما معتقدیم که این محتوا به نفع جامعه ما است ، ما هنوز آن را به طور کامل بررسی نکرده ایم. اگر پیشنهادی برای پیشرفت دارید ، لطفاً با کلیک بر روی دکمه "گزارش یک مسئله" در پایین آموزش ، به ما اطلاع دهید.

الگوی طراحی زنجیره ای مسئولیت یکی از الگوی طراحی رفتاری است.

الگوی طراحی مسئولیت

Chain of Responsibility Design Patte, Chain of Responsibility Patte, Chain of Responsibility Patte Java, Chain of Responsibility

الگوی زنجیره ای مسئولیت برای دستیابی به اتصال سست در طراحی نرم افزار استفاده می شود که در آن درخواست مشتری به زنجیره ای از اشیاء منتقل می شود تا آنها را پردازش کند. سپس شیء موجود در زنجیره تصمیم می گیرد که چه کسی درخواست را پردازش می کند و آیا درخواست لازم است به شیء بعدی در زنجیره ارسال شود یا خیر.

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

بیایید نمونه ای از الگوی زنجیره ای مسئولیت را در JDK مشاهده کنیم و سپس به اجرای یک نمونه واقعی زندگی از این الگوی خواهیم پرداخت. ما می دانیم که می توانیم چندین بلوک صید در یک کد بلوک امتحان داشته باشیم. در اینجا هر بلوک صید نوعی پردازنده برای پردازش آن استثناء خاص است. بنابراین ، هنگامی که هر استثنا در بلوک آزمایشی رخ می دهد ، ارسال آن به اولین بلوک صید برای پردازش. اگر بلوک Catch قادر به پردازش آن نباشد ، درخواست را به شیء بعدی در زنجیره ای یعنی بلوک Catch Next ارسال می کند. اگر حتی آخرین بلوک صید قادر به پردازش آن نباشد ، استثناء به خارج از زنجیره به برنامه فراخوانی پرتاب می شود.

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

Chain of Responsibility Patte, Chain of Responsibility Design Patte

یکی از نمونه بارز الگوی زنجیره ای مسئولیت ، دستگاه Dispense دستگاه دستگاه خودپرداز است. کاربر مبلغی را که باید توزیع شود وارد می کند و از نظر قبض های ارز تعریف شده مانند 50 دلار ، 20 دلار ، 10 دلار و غیره مبلغ دستگاه را توزیع می کند. اگر کاربر وارد مبلغی شود که چند برابر نیست ، خطا می کند. ما برای اجرای این راه حل از الگوی زنجیره ای مسئولیت استفاده خواهیم کرد. زنجیره درخواست را به همان ترتیب تصویر زیر پردازش می کند. توجه داشته باشید که ما می توانیم این راه حل را به راحتی در یک برنامه واحد پیاده سازی کنیم اما پیچیدگی افزایش می یابد و راه حل به شدت همراه خواهد بود. بنابراین ما زنجیره ای از سیستم های توزیع را ایجاد خواهیم کرد تا صورتحساب 50 دلار ، 20 دلار و 10 دلار را توزیع کنیم.

الگوی طراحی زنجیره ای مسئولیت - کلاسهای پایه و رابط

ما می توانیم یک ارز کلاس ایجاد کنیم که مبلغی را برای توزیع و استفاده از اجرای زنجیره ای ذخیره کند. java

رابط پایه باید روشی برای تعریف پردازنده بعدی در زنجیره و روشی باشد که درخواست را پردازش می کند. رابط Dispense ATM ما در زیر به نظر می رسد. dispensechain. java

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

ما باید کلاسهای پردازنده مختلفی ایجاد کنیم که رابط DispenSechain را پیاده سازی کرده و اجرای روش های Dispense را ارائه می دهیم. از آنجا که ما در حال توسعه سیستم خود برای کار با سه نوع قبض ارزی - 50 دلار ، 20 دلار و 10 دلار هستیم ، ما سه پیاده سازی بتونی ایجاد خواهیم کرد. دلار 50dispenser. java

نکته مهمی که در اینجا باید به آن توجه داشت ، اجرای روش Dispense است. شما متوجه خواهید شد که هر اجرا در تلاش است تا درخواست را پردازش کند و بر اساس مبلغ ، ممکن است بخشی یا کامل آن را پردازش کند. اگر یکی از زنجیرهایی که قادر به پردازش کامل آن نیست ، درخواست را به پردازنده بعدی در زنجیره ارسال می کند تا درخواست باقی مانده را پردازش کند. اگر پردازنده قادر به پردازش هر چیزی نباشد ، فقط همان درخواست را به زنجیره بعدی منتقل می کند.

الگوی طراحی زنجیره ای از مسئولیت ها - ایجاد زنجیره

این یک گام بسیار مهم است و ما باید زنجیره ای را با دقت ایجاد کنیم ، در غیر این صورت ممکن است یک پردازنده به هیچ وجه درخواست دریافت نکند. به عنوان مثال ، در اجرای ما اگر اولین زنجیره پردازنده را به عنوان dollar10dispenser و سپس dollar20dispenser نگه داریم ، درخواست هرگز به پردازنده دوم ارسال نمی شود و زنجیره ای بی فایده می شود. در اینجا اجرای دستگاه پخش دستگاه خودپرداز ما برای پردازش مبلغ درخواست شده کاربر است. atmdispensechain. java

وقتی بالاتر از برنامه کار می کنیم ، مانند زیر خروجی می گیریم.

زنجیره ای از مسئولیت ها نمودار کلاس الگوی طراحی

Chain of Responsibility, Chain of Responsibility Design Patte, Chain of Responsibility Patte Class Diagram

نمونه Dissence ATM ما از زنجیره ای از الگوی طراحی مسئولیت به نظر می رسد مانند تصویر زیر.

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

  • مشتری نمی داند کدام قسمت از زنجیره درخواست را پردازش می کند و درخواست را به اولین شیء در زنجیره ارسال می کند. به عنوان مثال ، در برنامه ما Atmdispensechain از چه کسی در حال پردازش درخواست برای توزیع مبلغ وارد شده است ، آگاه نیست.
  • هر شیء در زنجیره اجرای خود را برای پردازش درخواست ، کامل یا جزئی یا ارسال آن به شی بعدی در زنجیره خواهد داشت.
  • هر شیء موجود در زنجیره باید به شیء بعدی در زنجیره ای مراجعه کند تا درخواست را به آن منتقل کند ، که توسط ترکیب جاوا حاصل می شود.
  • ایجاد زنجیره با دقت بسیار مهم است در غیر این صورت ممکن است موردی وجود داشته باشد که درخواست هرگز به یک پردازنده خاص ارسال نشود یا هیچ اشیاء در زنجیره ای وجود ندارد که قادر به رسیدگی به درخواست باشند. در اجرای من ، من چک را برای کاربر وارد شده اضافه کرده ام تا مطمئن شود که توسط همه پردازنده ها به طور کامل پردازش می شود اما اگر درخواست به آخرین شیء برسد ، ممکن است آن را بررسی نکنیم و استثناء کنیم و اشیاء دیگری در زنجیره وجود نداشته باشد. برای ارسال درخواست به. این یک تصمیم طراحی است.
  • الگوی طراحی زنجیره ای مسئولیت برای دستیابی به اتصال از دست دادن خوب است اما در صورتی که بیشتر کد در کلیه پیاده سازی ها رایج باشد ، تجارت زیادی در کلاس های اجرای و مشکلات نگهداری دارد.

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

  • java. util. logging. logger#log ()
  • javax. servlet. filter#dofilter ()

این همه برای الگوی طراحی زنجیره ای مسئولیت ، امیدوارم که آن را دوست داشته باشید و بتوانید درک خود را در مورد این الگوی طراحی پاک کنید.

اگر از این آموزش و جامعه گسترده تر ما لذت بردید ، در نظر بگیرید که محصولات دیجیتالی ما را بررسی کنید که می تواند به شما در دستیابی به اهداف توسعه خود نیز کمک کند.

التداول المالي...
ما را در سایت التداول المالي دنبال می کنید

برچسب : نویسنده : سیروس ابراهیم‌زاده بازدید : <-PostHit-> تاريخ : يکشنبه 28 اسفند 1401 ساعت: 11:55