memperkenalkan
Mode perintah didefinisikan sebagai: digunakan untuk merangkum permintaan ke dalam suatu objek, sehingga Anda dapat parameterisasi klien dengan permintaan yang berbeda; Permintaan antrian atau log, dan melakukan operasi yang dapat dibatalkan. Dengan kata lain, mode perubahan dirancang untuk merangkum panggilan, permintaan dan pengoperasian fungsi ke dalam satu objek, dan kemudian melakukan serangkaian pemrosesan pada objek. Selain itu, objek perintah dan objek penerima dapat dipisahkan dengan memanggil objek yang menerapkan fungsi tertentu.
teks
Mari kita tunjukkan pola ini melalui program pembelian kendaraan, pertama -tama mendefinisikan kelas operasi spesifik pembelian kendaraan:
Salinan kode adalah sebagai berikut:
$ (function () {
var carmanager = {
// Minta informasi
requestInfo: function (model, id) {
mengembalikan 'informasi untuk' + model +
'Dengan ID' + ID + 'adalah foobar';
},
// Beli mobil
buyvehicle: function (model, id) {
mengembalikan 'Anda telah berhasil membeli barang'
+ id + ', a' + model;
},
// Atur tampilan
Pengaturan Disusentasikan: Fungsi (model, id) {
kembali 'Anda telah berhasil memesan pandangan'
+ model + '(' + id + ')';
}
};
}) ();
Mari kita lihat kode di atas. Kami hanya menjalankan perintah manajer dengan memanggil fungsi. Namun, dalam beberapa kasus, kami tidak ingin secara langsung memanggil metode di dalam objek. Ini akan meningkatkan ketergantungan antara objek. Sekarang mari kita kembangkan CarManager ini untuk menerima permintaan pemrosesan dari objek CarManager termasuk model dan ID mobil. Menurut definisi pola perintah, kami berharap dapat mengimplementasikan panggilan fungsi berikut:
Salinan kode adalah sebagai berikut:
Carmanager.execute ({commandType: "buyvehicle", operand1: 'ford escort', operand2: '453543'});
Menurut persyaratan ini, kami dapat mengimplementasikan metode CarManager.Execute dengan cara ini:
Salinan kode adalah sebagai berikut:
Carmanager.execute = function (command) {
return carmanager [command.Request] (command.model, command.carid);
};
Setelah transformasi, panggilannya jauh lebih sederhana, dan panggilan berikut dapat diimplementasikan (tentu saja, beberapa detail pengecualian masih perlu ditingkatkan):
Salinan kode adalah sebagai berikut:
Carmanager.execute ({request: "arrangeViewing", model: 'ferrari', carid: '145523'});
Carmanager.execute ({request: "requestInfo", model: 'ford mondeo', carid: '543434'});
Carmanager.execute ({request: "requestInfo", model: 'ford escort', carid: '543434'});
Carmanager.execute ({request: "buyvehicle", model: 'ford escort', carid: '543434'});
Meringkaskan
Mode perintah lebih mudah untuk merancang antrian perintah, dan lebih mudah untuk menghitung perintah ke dalam log saat diperlukan, dan memungkinkan pihak yang menerima permintaan untuk memutuskan apakah akan menyebutnya, dan juga dapat menerapkan pencabutan dan mengatur ulang permintaan. Selain itu, karena kelas spesifik yang ditambahkan tidak mempengaruhi kelas lain, mudah untuk diimplementasikan.
Tetapi prinsip pengembangan yang gesit memberi tahu kita untuk tidak menambahkan fungsi yang tidak diinginkan berdasarkan tebakan dan sebenarnya yang tidak diinginkan pada kode. Jika Anda tidak yakin apakah suatu sistem memerlukan mode perintah, Anda biasanya tidak terburu -buru untuk mengimplementasikannya. Bahkan, tidak sulit untuk mengimplementasikan mode ini saat diperlukan. Hanya bermakna untuk refactor kode asli ke mode perintah ketika benar -benar diperlukan seperti kehancuran, memulihkan operasi dan fungsi lainnya.