يجب أن يعلم الأصدقاء الذين استخدموا وحدات الماكرو أن استخدام وحدات الماكرو يمكن أن يربط مهارات متعددة بمفتاح واحد. على سبيل المثال، إذا كانت المهارة المصنفة أولاً تحتوي على قرص مضغوط، فسيتم تخطي هذه المهارة وسيتم تنفيذ المهارات اللاحقة. أتذكر عندما كنت ألعب DK، عندما كنت أقاتل الوحوش، كنت أستخدم زرًا واحدًا فقط واستمر في الضغط عليه. في طريقتي doGet وdoPost في servlet، نرسل عادةً طلب doGet إلى doPost للمعالجة، وهذا أيضًا نموذج لسلسلة المسؤولية.
يوجد هنا ماكرو يربط بين المهارتين "النبض البارد ذو الدم الجليدي" و"السهم الجليدي". مثال البرنامج هو كما يلي:
مسؤولية الحزمة;/** * واجهة مهارات DOC، يجب أن تنفذ المهارات المراد ربطها هذه الواجهة* */public Interface ISkill { public void castSkill();}package Responsibility;import java.util.ArrayList;import java.util List; /** * فئة ماكرو DOC، تُستخدم لربط مهارات متعددة معًا لتحقيق الإرسال بنقرة واحدة* */public class Macro { /** * مجموعة DOC لمهارات متعددة مرتبطة معًا*/ public List<ISkill > Skills = new ArrayList<ISkill>(); /** * * يلقي DOC المهارات بترتيب الربط */ public void castSkill() { for (int i = 0; i < Skills.size(); i++) { Skills.get( i).castSkill(); } } /** * مهارة ربط DOC * * @param Skill */ public void bindSkill(ISkill Skill) { Skills.add(skill }}مسؤولية الحزمة;/** * مهارة DOC Ice Arrow، لا يوجد وقت للتبريد* */public class IceArrow Implements ISkill { @Override public void castSkill() { System.out.println("Cast--"Ice Arrow"); }}مسؤولية الحزمة;/* * * مهارة DOC Ice-Blooded Cold Pulse، وقت التبريد دقيقتين*/public class IceBloodFast Implements ISkill { @Override public void castSkill() { // يمكن استخدام هذا لتحديد ما إذا كانت المهارة تهدأ System.out.println("Cast--"النبض البارد ذو الدم الجليدي") تم حذفه هنا؛ }}
فئة الاختبار:
مسؤولية الحزمة؛ public class Main { public static void main(String[] args) { Macro Macro = new Macro(); macro.bindSkill(new IceBloodFast()); ); }}
نتائج الاختبار:
الآن الصب--"صب النبض البارد بدم جليدي--"سهم الجليد
ملخص: يتم استخدام نموذج سلسلة المسؤولية بشكل أساسي عندما يحتوي الطلب على كائنات متعددة للمعالجة.