Perintah Desain Pola

chmood
Maksud

   Merangkum permintaan sebagai objek, sehingga membiarkan Anda parameterisasi klien dengan permintaan yang berbeda, antrian atau log permintaan, dan mendukung operasi undoable.
Mempromosikan "doa dari metode pada objek" status objek penuh
Sebuah callback berorientasi objek
Masalah
Perlu mengeluarkan permintaan untuk objek tanpa mengetahui apa-apa tentang operasi yang diminta atau penerima permintaan.

   Perintah decouples objek yang memanggil operasi dari salah satu yang tahu bagaimana melakukan itu. Untuk mencapai pemisahan ini, desainer menciptakan kelas dasar abstrak yang memetakan penerima (obyek) dengan tindakan (pointer ke fungsi anggota). Kelas dasar berisi metode mengeksekusi () yang hanya menyebut tindakan pada penerima.

Semua klien benda Command memperlakukan setiap objek sebagai "kotak hitam" dengan hanya menerapkan metode maya objek mengeksekusi () setiap kali klien membutuhkan "layanan" objek.

Kelas Command memegang beberapa bagian dari: sebuah objek, metode yang akan diterapkan ke objek, dan argumen yang akan berlalu ketika metode ini diterapkan. "Mengeksekusi" metode Komando kemudian menyebabkan potongan untuk datang bersama-sama.

Urutan objek Command dapat dirakit menjadi komposit (atau makro) perintah.


   Klien yang menciptakan perintah tidak klien yang sama yang mengeksekusinya. Pemisahan ini memberikan fleksibilitas dalam waktu dan urutan perintah. Mewujudkan perintah sebagai objek berarti mereka dapat lulus, dipentaskan, bersama, dimuat dalam sebuah tabel, dan sebaliknya diinstrumentasi atau dimanipulasi seperti benda lainnya.


Objek perintah dapat dianggap sebagai "token" yang dibuat oleh salah satu klien yang tahu apa yang perlu dilakukan, dan diteruskan ke klien lain yang memiliki sumber daya untuk melakukannya.

   Pola Command memungkinkan permintaan untuk dikemas sebagai objek, sehingga memungkinkan klien untuk diparameterisasi dengan permintaan yang berbeda. "Check" di restoran adalah contoh dari pola Command. Pelayan atau pelayan mengambil perintah atau perintah dari pelanggan dan merangkum agar dengan menulis itu di cek. Order kemudian antri untuk order masak singkat. Perhatikan bahwa pad dari "pemeriksaan" yang digunakan oleh masing-masing pelayan tidak tergantung pada menu, dan karena itu mereka dapat mendukung perintah untuk memasak banyak item yang berbeda.


   Mendefinisikan antarmuka Command dengan metode tanda tangan seperti mengeksekusi ().
Membuat satu atau lebih kelas turunan yang merangkum beberapa subset dari: a "penerima" objek, metode untuk memohon, argumen untuk lulus.
Instantiate objek Command untuk setiap permintaan eksekusi ditangguhkan.
Lulus objek Command dari pencipta (alias pengirim) ke Invoker (alias penerima).
Invoker memutuskan kapan untuk mengeksekusi ().

   Rantai Tanggung Jawab, Command, Mediator, dan Observer, membahas bagaimana Anda dapat memisahkan pengirim dan penerima, tetapi dengan berbeda trade-off. Perintah biasanya menentukan koneksi pengirim-penerima dengan subclass.
Rantai Tanggung Jawab dapat menggunakan Command untuk mewakili permintaan sebagai objek.
Perintah dan Memento bertindak sebagai token sihir untuk diedarkan dan dipanggil di lain waktu. Dalam Command, token mewakili permintaan; di Memento, itu merupakan keadaan internal suatu objek pada waktu tertentu. Polimorfisme adalah penting untuk Command, tetapi tidak untuk Memento karena interface-nya begitu sempit bahwa kenang-kenangan hanya bisa dilalui sebagai nilai.
Perintah dapat menggunakan Memento untuk mempertahankan negara diperlukan untuk operasi undo.
MacroCommands dapat diimplementasikan dengan Composite.
Sebuah Command yang harus disalin sebelum ditempatkan pada daftar riwayat bertindak sebagai Prototype a.
Dua aspek penting dari pola Command: pemisahan interface (Invoker yang diisolasi dari penerima), pemisahan waktu (toko siap-untuk-pergi memproses permintaan itu akan dinyatakan kemudian).



Komentar