Teman-teman yang pernah menggunakan makro harus tahu bahwa menggunakan makro dapat mengikat banyak keterampilan dalam satu kunci. Misalnya, jika skill peringkat pertama memiliki CD, maka skill ini akan dilewati dan skill selanjutnya akan dieksekusi. Saya ingat dulu waktu saya bermain DK, saat melawan monster, saya hanya menggunakan satu tombol dan terus menekannya. Dalam metode doGet dan doPost di servlet, kami biasanya mengirimkan permintaan doGet ke doPost untuk diproses.
Disini terdapat makro yang mengikat kedua skill "Ice-Blooded Cold Pulse" dan "Ice Arrow". Contoh programnya adalah sebagai berikut:
tanggung jawab paket;/** * Antarmuka keterampilan DOC, keterampilan yang akan diikat harus mengimplementasikan antarmuka ini* */antarmuka publik ISkill { public void castSkill();}tanggung jawab paket;import java.util.ArrayList;import Java.util List; /** * Kelas makro DOC, digunakan untuk menyatukan beberapa keterampilan untuk mencapai casting sekali klik* */Makro kelas publik { /** * Kumpulan DOC dari beberapa keterampilan yang diikat menjadi satu*/ Daftar publik<ISkill > keterampilan = baru ArrayList<ISkill>(); /** * * DOC mengeluarkan keterampilan dalam urutan yang mengikat. */ public void castSkill() { for (int i = 0; i < skills.size(); i++) { skills.get( i).castSkill(); } } /** * Keterampilan mengikat DOC. * * @param skill */ public void bindSkill(ISkill skill) { skills.add(skill }}tanggung jawab paket;/** * Keterampilan DOC Ice Arrow, tanpa waktu pendinginan* */public class IceArrow mengimplementasikan ISkill { @Override public void castSkill() { System.out.println("Cast--"Ice Arrow"); }}tanggung jawab paket;/* * * Keterampilan Denyut Dingin Berdarah Es DOC, waktu pendinginan 2 menit*/kelas publik IceBloodFast mengimplementasikan ISkill { @Override public void castSkill() { // Ini dapat digunakan untuk menentukan apakah skill sedang dalam masa pendinginan. System.out.println("Cast--"Ice-Blooded Cold Pulse") dihilangkan di sini; }}
Kelas tes:
tanggung jawab paket; kelas publik Utama { public static void main(String[] args) { Makro makro = makro baru(); makro.bindSkill(new IceBloodFast()); );
Hasil tes:
Sekarang casting--"Pengecoran denyut dingin berdarah es--"Ice Arrow
Ringkasan: Model rantai tanggung jawab terutama digunakan ketika permintaan mungkin memiliki banyak objek untuk diproses.