نمط سلسلة المسؤولية هو نمط سلوك الكائن. في سلسلة المسؤولية ، يتم توصيل العديد من الكائنات بواسطة مرجع كل كائن إلى منزله التالي لتشكيل سلسلة. يتم تمرير الطلب على هذه السلسلة حتى يقرر كائن على السلسلة معالجة الطلب. لا يعرف العميل الذي يقدم هذا الطلب الكائن الموجود على السلسلة في نهاية المطاف يعالج الطلب ، والذي يسمح للنظام بإعادة تنظيم وتعيين المسؤوليات ديناميكيًا دون التأثير على العميل.
نموذج سلسلة المسؤولية هو أحد نماذج التصميم السلوكي. كيف تفهم سلسلة المسؤولية؟ يمكن فهم سلسلة المسؤولية على أنها توصيل عدة كائنات في البداية والنهاية. كل عقدة هي كائن ، ويتوافق كل كائن مع منطق معالجة مختلف حتى يستجيب كائن لطلب المعالجة. يصبح هذا النموذج نموذج سلسلة المسؤولية.
هل يمكننا إيجاد نموذج أولي لنموذج سلسلة المسؤولية في الحياة؟ هناك العديد من الأمثلة من هذا النوع. على سبيل المثال ، إذا كنت ترغب في شراء منزل ، فإن أول شيء هو أن مندوب المبيعات (التطبيق 1) يستقبلك. إذا قلت أنك تريد خصم 3 ٪ ، فلا توجد مشكلة. في هذا الوقت ، ستحصل مندوب المبيعات على سلطة إعطاء خصم 3 ٪ ، وسوف يتعامل مبيعات المبيعات (التطبيق 1). في هذا الوقت ، جاء رجل ثري وقال إنه يريد شراء 10 وحدات وطلب خصم 5 ٪. لم يكن لدى موظفي المبيعات (التطبيق 1) سلطة إعطاء خصم 5 ٪. كان عليه أن يتقدم بطلب إلى القائد المتفوق ، ومدير المبيعات ، ومدير المبيعات (الطلب 2) وافق على الطلب. في هذا الوقت ، جاء الزوج الوطني شياو وانغ. قال شياو وانغ إنه اشترى جميع الممتلكات عشرة في المئة. في هذا الوقت ، لم يكن لمدير المبيعات (الهدف 2) الكثير من السلطة واضطر إلى التقدم بطلب للحصول على موافقة الرئيس التنفيذي.
بمعنى آخر ، يتم استلام كل عميل من قبل مندوب مبيعات. يقترح العميل أذونات مختلفة ويسلمها مندوب المبيعات إلى كائنات مختلفة للتسليم. لا يهتم العميل بالكائن الذي يتعامل مع طلبه ، مما يقلل من علاقة الاقتران بين المرسل ومستلم الطلب.
أدناه ، نستخدم موافقة مصاريف السفر على رحلة العمل كمثال على تنفيذ نموذج سلسلة المسؤولية التالية ، أولاً تحديد فئة القيادة التجريدية:
حزمة com.test.demo ؛ زعيم فئة التجريدية العامة {زعيم محمي Nexthandler ؛ // القيادة السابقة المعالج الفراغ النهائي العام (int money) {if (money <= limit ()) {// selse {if (nexthandler! = null) {nexthandler.handlerRequest (money) ؛ // تركها في القيادة السابقة للمعالجة}}}}}}/** /** الموافقة*/ معالج الفراغ التجريدي العام (int money) ؛ }هذا فئة مجردة. فيما يلي يرثها من خلال عدة فئات. أولاً ، فئة قائد المجموعة:
حزمة com.test.demo ؛ يمتد Groupleader من الطبقة العامة التي يمتد زعيم {public int limit () {return 1000 ؛ // تشير إلى أن قائد الفريق لديه 1000 سلطة موافقة يوان} معالج الفراغ العام (int money) {system.out.println ("معتمد زعيم الفريق"+المال) ؛ }}فئة المشرف:
حزمة com.test.demo ؛ يمتد مدير الطبقة العامة الزعيم {Override Public int limit () {return 5000 ؛ } Override public void Handler (int money) {system.out.println ("المعتمد من المشرف"+المال) ؛ }}فئة المدير:
حزمة com.test.demo ؛ مدير الفئة العامة يمتد Leader {Override public int limit () {return 10000 ؛ } Override Public Void Handler (int money) {system.out.println ("المدير المعتمد"+المال) ؛ }}فئة الرئيس:
حزمة com.test.demo ؛ يمتد الرئيس التنفيذي للطبقة العامة Leader {Override Public int limit () {return Integer.max_value ؛ } Override public void Handler (int money) {system.out.println ("الرئيس التنفيذي المعتمد"+المال) ؛ }}لا يوجد حد للرؤساء. فيما يلي تعريف لموظفي Xiao Zhang يتقدم بطلب للحصول على سداد السفر:
حزمة com.test.demo ؛ الفئة العامة Xiaozhang {public static void main (string [] args) {groupleader groupleader = new groupleader () ؛ مدير المدير = مدير جديد () ؛ مدير مدير = New Manager () ؛ الرئيس التنفيذي = الرئيس التنفيذي الجديد () ؛ groupleader.nexthandler = مدير ؛ Director.NexThandler = مدير ؛ manager.nexthandler = الرئيس التنفيذي ؛ groupleader.handlerRequest (50000) ؛ groupleader.handlerRequest (500) ؛ groupleader.handlerRequest (5000) ؛ }}تقدم شياو تشانغ بطلب لثلاث معاملات مثل قائد الفريق. في هذا الوقت ، مثال العملية على النحو التالي:
يمكننا أن نرى أن الأموال المختلفة تتم معالجتها بواسطة كائنات مختلفة. Xiao Zhang لا يهتم بمن يتعامل معهم. يحتاج فقط إلى العثور على قائد الفريق. هذه هي سمة نموذج سلسلة المسؤولية.
هذا كل شيء بالنسبة لك لتقديم المحتوى ذي الصلة على نموذج تصميم سلسلة مسؤولية Java. آمل أن يكون ذلك مفيدًا لك!