เพื่อนที่เคยใช้มาโครควรรู้ว่าการใช้มาโครสามารถรวมทักษะหลายอย่างไว้ในคีย์เดียวได้ ตัวอย่างเช่น หากทักษะอันดับหนึ่งมีซีดี ทักษะนี้จะถูกข้ามและทักษะถัดไปจะถูกดำเนินการ ฉันจำได้ว่าเมื่อก่อนฉันเคยเล่น DK ตอนที่ต่อสู้กับสัตว์ประหลาด ฉันแค่ใช้ปุ่มเดียวและกดมันต่อไป ในเมธอด doGet และ doPost ในเซิร์ฟเล็ต เรามักจะส่งคำขอ doGet ไปยัง doPost เพื่อประมวลผล นี่เป็นโมเดลสายโซ่ของความรับผิดชอบด้วย
นี่คือมาโครที่เชื่อมโยงสองทักษะ "Ice-Blooded Cold Pulse" และ "Ice Arrow" ตัวอย่างโปรแกรมมีดังนี้:
ความรับผิดชอบแพ็คเกจ;/** * อินเทอร์เฟซทักษะ DOC ทักษะที่จะผูกมัดต้องใช้อินเทอร์เฟซนี้ * / อินเทอร์เฟซสาธารณะ ISkill { public void castSkill();} ความรับผิดชอบแพ็คเกจ; นำเข้า java.util.ArrayList; นำเข้ารายการ java.util. /** * คลาสมาโคร DOC ใช้เพื่อเชื่อมโยงหลายทักษะเข้าด้วยกันเพื่อให้ได้การร่ายแบบคลิกเดียว* */มาโครคลาสสาธารณะ { /** * คอลเลกชัน DOC ของหลายทักษะผูกติดกัน*/ รายการสาธารณะ<ISkill > ทักษะ = ใหม่ ArrayList<ISkill>(); /** * * DOC ร่ายทักษะตามลำดับ */ public void castSkill() { for (int i = 0; i < skills.size(); i++) { skills.get( i).castSkill(); } } /** * ทักษะการผูก DOC. ทักษะ DOC Ice Arrow ไม่มีเวลาทำความเย็น* */คลาสสาธารณะ IceArrow ใช้ ISkill { @Override public void castSkill() { System.out.println("Cast--"Ice Arrow"); }} ความรับผิดชอบของแพ็คเกจ;/* * * ทักษะ DOC Ice-Blooded Cold Pulse เวลาทำความเย็น 2 นาที*/คลาสสาธารณะ IceBloodFast ใช้ ISkill { @Override public void castSkill() { // สิ่งนี้สามารถใช้เพื่อพิจารณาว่าทักษะกำลังเย็นลงหรือไม่ System.out.println("Cast--"Ice-Blooded Cold Pulse") จะถูกละไว้ที่นี่; }}
ชั้นเรียนทดสอบ:
ความรับผิดชอบของแพ็คเกจสาธารณะ { โมฆะสาธารณะหลัก (สตริง [] args) { แมโครมาโคร = มาโครใหม่ (); macro.bindSkill (ใหม่ IceBloodFast ()); ); }}
ผลการทดสอบ:
ตอนนี้ร่าย - "ร่ายชีพจรเย็นเลือดน้ำแข็ง -" ลูกศรน้ำแข็ง
สรุป: แบบจำลองสายโซ่ความรับผิดชอบส่วนใหญ่จะใช้เมื่อคำขออาจมีหลายออบเจ็กต์ที่ต้องดำเนินการ