Mode perintah adalah pola yang paling membingungkan. dalam pemrograman Anda yang sebenarnya. Mode perintah sebenarnya bukan model yang sangat spesifik, dan justru fleksibilitas inilah yang membuat orang merasa sedikit bingung.
Definisi Perintah
Banyak kode mode perintah ditargetkan pada antarmuka grafis.
Encapsulate perintah ini ke dalam kelas, dan kemudian pengguna (penelepon) beroperasi di kelas ini. .
Jelas manfaat dari melakukan ini adalah bahwa hal itu sesuai dengan karakteristik pengemasan dan mengurangi perintah kopling.
Dari mode perintah, saya juga menemukan bahwa "masalah umum" dari mode desain: Saya tampaknya suka memperumit masalah sederhana, dan suka menambahkan pihak ketiga ke kelas yang berbeda. Kembali Kode.
Cara menggunakan mode perintah
Kode mode perintah spesifik beragam, karena ada berbagai cara untuk merangkum perintah, sistem yang berbeda. Contohnya adalah untuk merangkum perintah dalam daftar koleksi.
Mode perintah yang khas membutuhkan antarmuka. Ada metode terpadu di antarmuka, yang merupakan "merangkum perintah/permintaan ke dalam objek":
Salinan kode adalah sebagai berikut:
perintah antarmuka publik {
abstrak public void execute ();
}
Kode perintah/permintaan spesifik adalah untuk mengimplementasikan perintah antarmuka, dan ada tiga perintah spesifik di bawah ini:
Salinan kode adalah sebagai berikut:
Insinyur kelas publik mengimplementasikan perintah {
public void execute () {
// lakukan perintah insinyur
}
}
Programmer kelas publik mengimplementasikan perintah {
public void execute () {
// lakukan perintah programmer
}
}
Politisi kelas publik mengimplementasikan perintah {
public void execute () {
// Lakukan perintah politisi
}
}
Seperti biasa, kita dapat memanggil ketiga perintah ini secara langsung, tetapi menggunakan mode perintah, kita harus merangkumnya dan melemparkannya ke dalam daftar kotak hitam:
Salinan kode adalah sebagai berikut:
Produser kelas publik {
Public Static List ProduceRequests () {
Daftar antrian = arraylist baru ();
queue.add (domesticineer baru ());
queue.add (politisi baru ());
queue.add (programmer baru ());
Kembalikan antrian;
}
}
Setelah ketiga perintah ini masuk ke daftar, mereka telah kehilangan karakteristik penampilan mereka.
Salinan kode adalah sebagai berikut:
TestCommand kelas publik {
public static void main (string [] args) {
Daftar antrian = produser.produceRequests ();
untuk (iterator it = queue.iterator (); it.hasnext ();)
// Keluarkan fitur tengah dan lainnya, dan Anda tidak dapat menentukannya.
// Mereka setidaknya adalah "putra" dari perintah antarmuka.
((Perintah) it.next ()). Execute ();
}
}
Dapat dilihat bahwa penelepon pada dasarnya hanya berurusan dengan antarmuka dan tidak berinteraksi dengan implementasi spesifik. tidak perlu memodifikasi kode di Caller TestCommand.
Setelah memahami prinsip inti dari kode di atas, setiap orang harus memiliki metode mereka sendiri yang digunakan, terutama dalam cara memisahkan penelepon dan perintah spesifik, ada banyak metode implementasi. . Pendekatan ini hanya untuk demonstrasi.
Alasan yang baik untuk menggunakan mode perintah juga karena dapat menerapkan fungsionalitas undo, dan setiap perintah spesifik dapat mengingat tindakan yang baru saja dilakukan dan mengembalikannya jika diperlukan.
Mode perintah banyak digunakan dalam desain antarmuka. Perintah menu di Java Swing Use Command Mode.